重温《C++ Primer》笔记六 拷贝构造函数的存在

来源:互联网 发布:达内 专业硕士java 编辑:程序博客网 时间:2024/05/21 21:01

构造函数是在创建一个新对象的时候被执行的函数,其中参数列表就是让我们可以根据已知的数据来设置将要被创建的同类新对象。这些参数可以是传递给类中部分成员变量的,另外还有一种情况是,我们现在已经有了一个对象,想根据这个已知的对象创建一个相同的对象,由于成员变量比较多,如果一个一个地传递设置值的话,则参数表会很繁杂。那么C++就允许将构造函数的参数直接设置为该类对象。

那么现在有个疑问,这些工作完全可以使用一个函数来完成的啊。比如下面的代码:

class People{public:int static count;};People copy(People p){p.count++;return p;}int People::count = 0;void main(){People p1;People p2 = copy(p1);cout<<p2.count<<endl;}
上面的代码实现了我想要的功能,但是,这并不是一个初始化,而是使用C中参数传递的位拷贝的概念。在许多情况下,这种方式是可行的。但是,如果我们想以初始化的方式来介入这个过程中,让编译器在我们创建一个新对象时执行的操作不是位拷贝,而是像普通创建对象那样来调用我们的构造函数,因此C++设计了拷贝构造函数。拷贝构造函数在创建一个新对象的时候被调用,并且传递个这个函数的单一参数必须是创立对象的源对象,但是这个对象不能通过上面那样按值传递的方式来进入构造函数。



0 0
原创粉丝点击