在c++中类的派生的含义是什么?#include class CBOX{public:void f(){};void print(){};private:int length;int width;int height;};class ColorBox:public CBOX{public:void show(){};private:int color;};void main(){CBOX a;ColorBox b;b.show();}请问a

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 11:24:03

在c++中类的派生的含义是什么?#include class CBOX{public:void f(){};void print(){};private:int length;int width;int height;};class ColorBox:public CBOX{public:void show(){};private:int color;};void main(){CBOX a;ColorBox b;b.show();}请问a
在c++中类的派生的含义是什么?
#include
class CBOX
{
public:
void f(){};
void print(){};
private:
int length;
int width;
int height;
};
class ColorBox:public CBOX
{
public:
void show(){};
private:
int color;
};
void main()
{
CBOX a;
ColorBox b;
b.show();
}
请问a和b分别占用的是不同的空间吗?还是b中基类部分和a占用相同内存空间?或是b中基类部分是a中基类部分的一个copy,和a占有不同的空间.

在c++中类的派生的含义是什么?#include class CBOX{public:void f(){};void print(){};private:int length;int width;int height;};class ColorBox:public CBOX{public:void show(){};private:int color;};void main(){CBOX a;ColorBox b;b.show();}请问a
class CBOX {.}; 定义一个类之后,它只是说明两部分内容:
1.类里面【应该】按什么样的格式、存哪些数据
2.类有哪些成员函数,分别的功能——比如CBOX::print()这个函数.这些函数的代码是始终存在的,而且是共享的,原理下面再讲.
对象:当你用类去定义一个实例时,它就是一个对象:
CBOX a,b,c;
那么a,b,c每一个对象占用各自的空间,互不干扰.
下面讲一下成员函数:
成员函数,比如CBOX::print(),其实它是一个print(CBOX*)的包装.a.print()时,其实就是调用print(&a),在CBOX::print()中使用的任何length,width神马的,都是根据调用时传入的那个指针来决定是谁的length和width.而这个指针,就是传说中的this指针.
然后是继承:
现在基本的概念理清了,可能你也能理解了.继承仍然是定义一个类:
1.类里面,除了有基类【应该】有的数据外,还要在后面补充哪些数据
2.类里面,除了有基类有的成员函数外,还要加哪些成员函数
所以你例子中的a和b各自占用的是完全不同的空间.
继承的用处?
上面也说了,继承时新定义的成员变量(数据)是补充在后面的,也就意味着不会破坏基类原有的结构.所以对于
CBOX a;
ColorBox b;
b.print()时,还是调用的CBOX::print(),因为传递的是一个指针,它指向b,但是b的开头仍是一个CBOX的结构,所以print对它的操作完全没有问题