5:了解c++默认编写并调用哪些函数

来源:互联网 发布:tensorflow分布式部署 编辑:程序博客网 时间:2024/05/21 16:17

以下四个函数编译器会帮助自动生成,1、default构造函数 2、copy构造函数 3、赋值构造函数 4、析构函数

但是如果你显示声明了一个构造函数,default构造函数将不会被自动生成.这样你就不能再使用default构造函数了。

至于copy构造函数和赋值构造函数,如果所声明的类中有reference或者const成员属性时,也编译器也不会自动生成这两个构造函数,因为这两个函数都是把objA对象中的属性赋值到objB对象的相应属性(objA和objB是同一个类生成的不同对象),但是reference变量不能再引用其他的对象,而const变量的值是不能改变的,所以编译器就没法使用copy构造函数和赋值构造函数了,当然,设计者自己显示地声明copy构造函数和reference除外,因为设计者可以自定义那些赋值操作。

此外,如果base class的reference构造函数和copy构造函数声明为private时,编译器也不会自动生成copy构造函数和赋值构造函数,因为在赋值时必须调用base class的赋值函数,但是这个函数已经被声明为private了,所以编译器对于这种情况也无能为力。

0 0