本文内容取自于对狄泰学院 唐佐林老师 C++深度解析 课程的学习总结
关于析构的问题
- 单个对象 创建时构造函数的调用顺序
1.调用父类的构造过程
2.调用 成员变量的构造函数 (调用顺序与声明顺序相同)
3.调用类自身的构造函数
- 多个对象 析构时
析构顺序与构造顺序相反
实例分析
构造与析构顺序
#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;
}
运行结果
关于析构的答案
关于 const 对象的疑问
- const 关键字 能够 修饰对象
- const 修饰的对象为 只读对象
- 只读对象的 成员变量不允许被改变
- 只读对象是 编译阶段的概念,运行时生效
C++ 中的 const 成员函数
- const 对象 只能调用 const 的成员函数
- const 成员函数中 只有调用 const 成员函数
- const 成员函数中 不能直接改写成员变量的值
const 成员函数的定义:
关于类成员的疑问
从 面向对象的角度
- 对象由 属性(成员变量)和 方法(成员函数)构成
从 程序运行 的角度
- 对象由 数据 和 函数 构成
- 数据可以位于栈,堆和全局数据区
- 函数只能位于 代码段
结论
- 每一个对象拥有自己独立的属性(成员变量)
- 所有的 对象共享类的方法(成员函数)
- 方法能够直接访问对象的属性
- 方法中的 隐藏参数 this 用于指代 当前对象
小结
对象的 析构顺序与构造顺序相反
const 关键字能修饰对象,得到 只读对象
只读对象只能调用 const 成员函数
所有对象共享类的成员函数
隐藏的 this 指针用于表示 当前对象