liyuxia713

蹒跚前行者

常用链接

统计

Algorithms

C++

最新评论

[导入](复制、默认)构造函数

Technorati 标签:

初始化列表:通常使用初始化是为了提高效率,它直接调用与实参匹配的构造函数。【因为一般在构造函数体内的复制也经过初始化-->计算赋值(此时会调用复制构造函数)两个阶段】;特别的有些时候只能用初始化列表,即不能赋值的参数,如:const或引用类型的成员,没有默认构造函数的类类型成员。初始化列表中变量的初始化顺序是先声明的先初始化.

class cl1{ private: const int ci;  int &ri;}; //ci,ri只能在初始化列表中进行初始化。

默认构造函数:全部形参是默认实参的构造函数也是默认构造函数。

只要自己定义了(任意的)构造函数,编译器就不会为我们合成默认构造函数。

复制构造函数:单个形参为本类类型对象的引用的构造函数。对于不支持复制的类型(如IO类型)不能用复制构造函数。如果自己定义了复制构造函数(而不是构造函数,即:只定义构造函数,但没有定义复制构造函数,则编译器合成复制构造函数),则编译器不会合成复制构造函数。【复制构造函数需要特别注意指针成员,以后将说明】

ifstream file1("filename1"); //ok, direct initialization.

ifstream file2="filename2"; //error

如何防止复制:可以通过将复制构造函数声明为private来禁止普通函数(非成员,非友元函数)的访问;可以通过声明一个private复制构造函数而不对其定义来禁止成员函数和友元函数的访问。
文章来源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!254.entry

posted on 2009-03-08 21:00 幸运草 阅读(554) 评论(0)  编辑 收藏 引用 所属分类: C++


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理