多层继承
#include <iostream>
//艺人类
class Artist{
public:
Artist(){
std::cout<<"Artist()"<<std::endl;
}
~Artist(){
std::cout<<"~Artist()"<<std::endl;
}
public:
char name[4];//姓名
};
//歌手类
class Singer:public Artist{
public:
Singer(){
std::cout<<"Singer()"<<std::endl;
}
~Singer(){
std::cout<<"~Singer()"<<std::endl;
}
public:
int age; //年龄
};
//广东话歌手类
class CantoneseSinger:public Singer{
public:
CantoneseSinger(){
std::cout<<"CantoneseSinger()"<<std::endl;
}
~CantoneseSinger(){
std::cout<<"~CantoneseSinger()"<<std::endl;
}
private:
double fee; //出场费
};
int main(int argc, const char * argv[]) {
// insert code here...
std::cout << "sizeof(Artist):"<<sizeof(Artist)<<std::endl;; //4
std::cout << "sizeof(Singer):"<<sizeof(Singer)<<std::endl;; //8 =4+4
std::cout << "sizeof(CantoneseSinger):"<<sizeof(CantoneseSinger)<<std::endl;; //16 = 4+4+8
CantoneseSinger cs;
return 0;
}
sizeof(Artist):4
sizeof(Singer):8
sizeof(CantoneseSinger):16
Artist()
Singer()
CantoneseSinger()
~CantoneseSinger()
~Singer()
~Artist()
从分配的内存可以看到确实实现了继承
实例化的时候,先调用爷爷的构造器,接着父亲的构造器,然后自己的,析构的时候,正好相反。