随笔分类 -  深度探索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 ... 阅读全文
posted @ 2013-11-17 10:11 水目沾 阅读(303) 评论(0) 推荐(0)
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?... 阅读全文
posted @ 2013-11-15 18:07 水目沾 阅读(459) 评论(0) 推荐(0)
构造函数语义学之程序转化语义学(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 ); } 定义被转化之后,再做如下的... 阅读全文
posted @ 2013-11-14 13:44 水目沾 阅读(285) 评论(0) 推荐(0)
构造函数语义学之程序转化语义学(1)
摘要:大家知道初始化与赋值是有区别的,那么有哪几种初始化的方式呢?有以下三种情况://这句话可能有问题,回头修改! (1).明确的初始化操作(Explicit Initialization) (2).参数的初始化(Argument Initialization) (3).返回值的初始化(Explic... 阅读全文
posted @ 2013-11-13 13:52 水目沾 阅读(500) 评论(0) 推荐(0)
构造函数语义学之Copy Constructor构建操作(2)
摘要:二、详述条件 3 和 4 那么好,我又要问大家了,条件1 和 2比较容易理解。因为member object或 base class 含有copy constructor。那么member object所在的class或者base class的derived class需要合成一个nontrivi... 阅读全文
posted @ 2013-11-12 14:38 水目沾 阅读(313) 评论(0) 推荐(0)
构造函数语义学之Copy Constructor构建操作(1)
摘要:一、Copy Constructor的构建操作 就像 default constructor 一样,如果class没有申明一个 copy constructor,就会隐含的声明或隐含的定义一个。生成的 copy constructor 也分为 trivial 和 nontrivial 两种。只有 ... 阅读全文
posted @ 2013-11-12 08:14 水目沾 阅读(1452) 评论(1) 推荐(0)
构造函数语义学之Default Constructor构建操作
摘要:一、Default Constructor的构建操作 首先大家要走出两个误区: 1).任何class如果没有定义default constructor,就会被合成一个来。 2).便以其合成出来的default constructor 会明确设定“class”内每一个data membe... 阅读全文
posted @ 2013-11-10 14:23 水目沾 阅读(455) 评论(0) 推荐(0)