张艺兴情定孙红雷,痴汉cg,北京丰台实验学校
单个对象创建时,构造函数的调用顺序
1.首先判断该对象的类是否拥有父类,若有则先调用父类的构造函数
2.判断该对象的成员是否是其它类的成员,若是则调用成员变量的构造函数(调用顺序和声明顺序相同)
3.最后调用对象本身类的构造函数
单个对象被注销后,调用的析构函数与对应构造函数的调用顺序相反
参考下面示例,创建两个类Member,Test,然后Tesrt成员包含了Member类的成员:
#include <stdio.h> class Member { const char* ms; public: Member(const char* s) { printf("Member(const char* s): %s\n", s); ms = s; } ~Member() { printf("~Member(): %s\n", ms); } }; class Test { Member mA; Member mB; public: Test() : mB("mB"), mA("mA") { printf("Test()\n"); } ~Test() { printf("~Test()\n"); } }; Member gA("gA"); int main() { Test t; return 0; }
运行打印:
Member(const char* s): gA Member(const char* s): mA Member(const char* s): mB Test() ~Test() ~Member(): mB ~Member(): mA ~Member(): gA
const成员函数
为了体现对象的封装性,C++在类里引入了const成员函数
const成员函数定义,是在函数声明最右侧带上const关键字,例如:
class Test{ pbulic: int func(void) const; } int Test::func(void) const { }
const对象
const对象定义,是在对象声明最左侧带上const关键字,例如:
class Test{ pbulic: int func(void) const; } int Test::func(void) const { } const Test t;
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论