C++ 继承 构造函数、拷贝构造函数
2013-12-18 17:50
197 查看
一、整体代码
01.cpp
二、运行结果
ObjectB ...
Base ...
ObjectD ...
Derived ...
~Derived ...//先析构对象
~ObjectD ...//再析构对象中的成员对象
~Base ...
~ObjectB ..
01.cpp
#include <iostream> using namespace std; class ObjectB { public: ObjectB(int objb) : objb_(objb) { cout<<"ObjectB ..."<<endl; } ~ObjectB() { cout<<"~ObjectB ..."<<endl; } int objb_; }; class ObjectD { public: ObjectD(int objd) : objd_(objd) { cout<<"ObjectD ..."<<endl; } ~ObjectD() { cout<<"~ObjectD ..."<<endl; } int objd_; }; class Base { public: Base(int b) : b_(b), objb_(111) { cout<<"Base ..."<<endl; } Base(const Base& other) : objb_(other.objb_), b_(other.b_) { cout<<"Base ...copy"<<endl; } ~Base() { cout<<"~Base ..."<<endl; } int b_; ObjectB objb_; }; class Derived : public Base { public: Derived(int b, int d) : d_(d), Base(b), objd_(222) { cout<<"Derived ..."<<endl; } Derived(const Derived& other) : d_(other.d_), objd_(other.objd_), Base(other)//调用了父类的拷贝构造函数 { cout<<"Derived ...copy"<<endl; } ~Derived()//先执行方法体,再调用父类的析构函数 { cout<<"~Derived ..."<<endl; } int d_; ObjectD objd_; }; int main(void) { Derived d(100, 200);//首先调用父类的objb_(111),然后是父类构造函数,之后是子类的objd_(222),最后是子类的构造函数 //cout<<d.b_<<" "<<d.d_<<endl; //Base b1(100);//调用父类的构造函数 //Base b2(b1);//调用父类拷贝构造函数 //cout<<b2.b_<<endl; //Derived d2(d);//调用子类拷贝构造函数 return 0; }
二、运行结果
ObjectB ...
Base ...
ObjectD ...
Derived ...
~Derived ...//先析构对象
~ObjectD ...//再析构对象中的成员对象
~Base ...
~ObjectB ..
相关文章推荐
- C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定
- C++中的构造函数,拷贝构造函数和赋值运算
- c++继承知识点积累:继承和构造函数
- C++ 拷贝构造函数 赋值构造函数
- C++继承与构造函数、复制控制
- C++构造函数、拷贝构造函数、赋值函数浅析
- c++的构造函数极其调用(无参构造函数,有参构造函数,拷贝构造函数)
- C++多继承构造函数调用顺序
- 【转】C++中了类继承和调用父类的构造函数方法
- C++中构造函数,拷贝构造函数和赋值函数的区别和实现
- C++继承中构造函数调用顺序
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容 【转】 参考度4.6星
- 【C++继承与派生之二】有子对象的派生类的构造函数
- C++ 学习总结(十)——C++类与对象,及构造函数,析构函数,拷贝构造函数
- C++中虚继承派生类构造函数的正确写法
- C++基础知识整理四(构造函数及继承)
- 浅析C++的构造函数,拷贝构造函数和赋值运算符 .
- C++ 类的继承,基类中的构造函数是谁在调用?
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- C++构造函数和拷贝构造函数