随笔分类 - 深度探索C++对象模型
记录C++学习的点点滴滴
Data 语义学(2)
摘要:四、"继承"与 Data Member (1). 只有继承没有多态 先来看个例子 1 #include 2 3 using namespace std; 4 5 class A 6 { 7 public: 8 // 9 private:10 int val;11 ...
阅读全文
Data 语义学(1)
摘要:一、Data Member 的绑定(The binding of Data Member) 1 extern float x; 2 3 class Point3d 4 { 5 public: 6 Point3d( float, float, float); 7 float X() const { return x; } 8 void X( float new_x ) const { x = new_x; } 9 // ...10 private:11 float x,y,z; 12 }; 请问 Point3d::X()传回哪一个x?...
阅读全文
构造函数语义学之程序转化语义学(2)
摘要:在构造函数语义学之程序转化语义学(1)中编译器做了一些优化,有时他还会给你的程序更多的优化: (1) 在使用者层面做优化 如果程序员顶一个计算用的 constructor: X bar( const T &y, const T &z ) { X xx; // ...以 y 和 z 来处理 xx return xx; } 有的编译器开发人员会另外定义一个 constructor: X bar( const T &y, const T&z ) { return X( y,z ); } 定义被转化之后,再做如下的...
阅读全文
构造函数语义学之程序转化语义学(1)
摘要:大家知道初始化与赋值是有区别的,那么有哪几种初始化的方式呢?有以下三种情况://这句话可能有问题,回头修改! (1).明确的初始化操作(Explicit Initialization) (2).参数的初始化(Argument Initialization) (3).返回值的初始化(Explic...
阅读全文
构造函数语义学之Copy Constructor构建操作(2)
摘要:二、详述条件 3 和 4 那么好,我又要问大家了,条件1 和 2比较容易理解。因为member object或 base class 含有copy constructor。那么member object所在的class或者base class的derived class需要合成一个nontrivi...
阅读全文
构造函数语义学之Copy Constructor构建操作(1)
摘要:一、Copy Constructor的构建操作 就像 default constructor 一样,如果class没有申明一个 copy constructor,就会隐含的声明或隐含的定义一个。生成的 copy constructor 也分为 trivial 和 nontrivial 两种。只有 ...
阅读全文
构造函数语义学之Default Constructor构建操作
摘要:一、Default Constructor的构建操作 首先大家要走出两个误区: 1).任何class如果没有定义default constructor,就会被合成一个来。 2).便以其合成出来的default constructor 会明确设定“class”内每一个data membe...
阅读全文
浙公网安备 33010602011771号