`
mmdev
  • 浏览: 12933475 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

C++的构造函数和拷贝构造函数

阅读更多

★ 编译器自动生成的构造仅仅做让编译能通过的事情,它不会初始化成员变量。

★ 编译器并不会自动生成缺省的构造函数和拷贝构造函数,仅仅在它需要的时候。

没错!对于下面的类:

class Test {
int n;
};

编译器不会自动生成构造函数,因为没有字段需要初始化。

★ 很多时候都需要深拷贝,这时需要自己定义copy constructor和重载operator=。

★ 如果只需要浅拷贝,就不用定义copy constructor并逐一赋值,因为编译器自动生成的memcpy和memset更有效率。

★ 返回一个局部对象会导致两次拷贝构造:

T f() {
T t;
return t;
}

★ 全局和静态对象会在使用前自动初始化,所有字段置0。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics