C++ 类继承示例:Animal 和 Dog 类详解
#include
using namespace std;
class Animal //基类 { public: Animal(int age) : m_age(age) { cout << 'Animal' << endl; } ~Animal() { cout << '~Animal' << endl; } int m_age; protected: int m_pro; private: int m_pri; };
class Dog : public Animal // 继承 子类/派生类 { public: //Dog(int age = 1) { //error Dog(int age = 1) : Animal(age) { m_age = age; cout << 'Dog' << endl; } ~Dog() { cout << '~Dog' << endl; } // Animal an; };
int main() { cout << sizeof(Dog) << endl; Dog wc; return 0; }
解释这个程序的输出内容:这个程序的输出是: Animal Dog 8 ~Dog ~Animal
程序中定义了两个类,Animal和Dog。Animal类有一个成员变量m_age和一个构造函数和析构函数。Dog类继承自Animal类,并有一个成员变量m_age和一个构造函数和析构函数。
在主函数中,首先输出sizeof(Dog),表示Dog类的大小为8字节。然后创建一个Dog对象wc,输出Animal,表示调用了Animal类的构造函数,然后输出Dog,表示调用了Dog类的构造函数。最后输出~Dog和~Animal,表示分别调用了Dog类和Animal类的析构函数。
因为Dog类继承自Animal类,所以在创建Dog对象时会先调用Animal类的构造函数,然后再调用Dog类的构造函数。在对象销毁时,会先调用Dog类的析构函数,然后再调用Animal类的析构函数。由于Dog类中没有定义自己的成员变量,所以Dog类的大小为8字节,其中包含继承自Animal类的m_age成员变量。
原文地址: https://www.cveoy.top/t/topic/qsdw 著作权归作者所有。请勿转载和采集!