摘要:
以下代码体现了书中所说的如下几个知识:1. 如果一个class没有任何constructor,但它含有一个member object, 而后者有default constructor,编译器需要为该class合成出一个default constructor。(P41)2. 如果 类中的default constructor已经被显示的定义出来,编译器没办法合成第二个,编译器会采取什么行动呢。编译器会扩张已存在的constructors, 在其中安插一些代码,使得 user code 被执行前,先调用必要的default constructors。(P42)3. 当class内含一个menber 阅读全文
posted @ 2012-11-21 21:27
三更_雨
阅读(326)
评论(0)
推荐(0)
摘要:
关于这个问题,第一遍看的时候比较晕,不知道这个什么 bitwise copy是个什么东西,其实很简单,就是 位逐次拷贝(我靠,一句好犀利的废话)。额,具体来说呢,就是对 源类中的成员变量 中的每一位 都逐次 复制到 目标类中。具体的内容接着看。首先让我们看看这个概念是怎么出来的。书中第50页的时候说到:Default constructors 和 copy constructors 在 必要的时候 才由编译器产生出来这个句子中的“必要”意指当class不展现bitwise copy semantics时。这段话的意思呢,应该是这么个意思: 如果class中出现了bitwise copy sem 阅读全文
posted @ 2012-11-21 20:41
三更_雨
阅读(2919)
评论(1)
推荐(1)
摘要:
和 成员变量 的情况一样,如果类中有基类,那么调用 基类构造 函数的顺序和和声明的顺序一致。代码如下:class A1{public: A1(){cout<<"A1 construction"<<endl;}};class A2{public: A2(){cout<<"A2 construction"<<endl;}};class A3: public A1, public A2//注意,这里为声明的顺序{public: A3(){ A2::A2(); A1::A1(); cout<<" 阅读全文
posted @ 2012-11-21 18:59
三更_雨
阅读(274)
评论(0)
推荐(0)
摘要:
书中第43页中有如下描述:如果有多个class member objects 都要求constructor 初始化操作,将如何?C++语言要求以 “memeber objects 在class中的声明顺序”来调用各个constructors。也就是说 一个类中的 数据成员 的声明顺序决定了,他们的构造顺序。具体代码如下:class A1{public: A1(){cout<<"A1 construction"<<endl;}};class A2{public: A2(){cout<<"A2 construction"& 阅读全文
posted @ 2012-11-21 18:53
三更_雨
阅读(242)
评论(0)
推荐(0)

浙公网安备 33010602011771号