Bootstrap

深入理解C++对象的构造过程(笔记)

  1. 如果我们要通过某个class_A来instance一个对象object_A,通常要include class_A所在的头文件(class_A.h)。我的问题是,include class_A.h的作用是什么?

答:

  • 很自然的,也是很表面的一个问题是,如果你不include class_A.h,编译会报错,会显示class_A是一个undefined type.
  • 深层次的理解是:include class_A是给编译器提供该class的原型,编译器根据这个原型来为object_A来分配空间。所以,需要记住的知识点是:为对象分配空间这一步在编译阶段就做完了。
  1. 构造函数的作用是什么?

答:

  • 构造函数只是把上一步编译器分配好的空间进行初始化和赋值。初始化是通过初始化列表来完成的,赋值是通过构造函数 “{ }” 内的赋值语句来完成的。
  1. C++的成员函数是怎么找到成员变量的。

答:

  • 我们都知道c++中有一个重要的this 指针。这个指针是指向对象的,在我们的例子中也就是指向object_A的。在每个成员函数的实现过程中,我们作为C++的用户,虽然没有显示的把this指针添加到成员函数的形参列表中,但是编译器会帮我们在每个成员函数的形参列表中增加this指针。
  • 因为this指针是指向对象的,当然通过this指针就可以访问到所有的成员变量。
;