摘要:
1、构造语义学 C++的构造函数可能内带大量的隐藏码,因为编译器会扩充每一个构造函数,扩充程度视 class 的继承体系而定。一般而言编译器所做的扩充操作大约如下: 如果该类被列于成员初始化列表中,那么如果有任何明确指定的参数,都应该传递过去。若没有列于列表之中,虚基类的一个默认构造函数被调用(有的 阅读全文
摘要:
1、Member的各种调用方式 1.1 Nonstatic Member Functions 实际上编译器是将member function被内化为nonmember的形式,经过下面转化步骤: 1.给函数添加额外参数——this。 2.将对每一个nonstaitc data member的存取操作改 阅读全文
摘要:
1、 Data Member 的布局 同一个Access Section(private, public等)中,data member的顺序按照声明顺序排列,但是没有规定需要连续排序。同时编译器可能会安插一些内部的data member(比如vptr),用来支持整个对象模型。 不同Access Se 阅读全文
摘要:
1、Default Constructor 当编译器需要的时候,default constructor会被合成出来,只执行编译器所需要的任务(将members适当初始化)。 1.1 带有 Default Constructor 的Member Class Object 编译器的出来是:如果一个cla 阅读全文
摘要:
1、C/C++区别 C++较之C的最大区别,无疑在于面向对象,C程序中程序性地使用全局数据。而C++采用ADT(abstract data tpye)或class hierarchy的数据封装。类相较于C的struct不仅只包含了数据,同时还包括了对于数据的操作。在语言层面上C++带来了很多面向对象 阅读全文