C++——构造函数和析构函数的调用
2018-03-14 14:34
381 查看
题目:看下列程序输出结果
只需要记住一句话:先构造的后析构
构造:①声明b(5),先构造A,再构造B②B的构造函数调用了m_a1,m_a2 。 B先声明m_a1,所以先构造A(3),;后声明m_a2,再构造A(5)③等两个参数都构造好之后,再构造B构造A(m_i=2)——构造A(3) (m_i=3)——构造A(5) (m_i=5)——构造B
析构:析构B——析构A(5)——析构A(3)——析构A2 5 3 1
#include<iostream> using namespace std; class A { public: A(int n = 2) :m_i(n) {} ~A() { cout << m_i; } protected: int m_i; }; class B :public A { private: A m_a1; A m_a2; public: B(int n):m_a2(n),m_a1(m_i+1){} ~B() { cout << m_i; --m_i; } }; int main() { B b(5); return 0; }
只需要记住一句话:先构造的后析构
构造:①声明b(5),先构造A,再构造B②B的构造函数调用了m_a1,m_a2 。 B先声明m_a1,所以先构造A(3),;后声明m_a2,再构造A(5)③等两个参数都构造好之后,再构造B构造A(m_i=2)——构造A(3) (m_i=3)——构造A(5) (m_i=5)——构造B
析构:析构B——析构A(5)——析构A(3)——析构A2 5 3 1
相关文章推荐
- C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定
- C++学习笔记-----不要在构造函数和析构函数中调用虚函数
- [C++] 关于 构造函数(construction) 析构函数(destruction)中调用虚函数
- C++中构造函数和析构函数调用的时机
- 《Effective C++ 》条款9:永远不要在构造函数或析构函数中调用虚函数
- C++ 构造函数和析构函数的调用顺序、虚析构函数的作用
- C++里类的构造函数与析构函数的调用时间
- 深度解析-->c++中构造函数,拷贝构造,赋值运算符重载,析构函数的调用情况
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)
- C++学习笔记(调用构造函数和析构函数的顺序)
- [C++] C++中的构造函数和析构函数的显式调用
- [C++]显示调用构造函数和析构函数
- 《深度探索c++ 对象模型》有感之构造函数和析构函数不能调用虚函数
- C++不要在构造函数和析构函数中调用virtual函数的原因
- C++ 派生类构造函数、析构函数调用 [大三TJB_708]
- C++中构造函数和析构函数避免调用虚函数的问题
- C++中, 构造函数和析构函数能不能被显示调用?