C++中构造函数调用与申明方式的关系

Posted on 2012-03-09 13:20  一年级的小学生  阅读(377)  评论(0编辑  收藏  举报

C++中,对于自定义的类比如GCStudent,需要声明并且初始化一个对象。

GCStudent stu;

GCStudent stu1 = stu;

对于第一个stu的声明,系统肯定会去调用系统默认的构造函数。但是对于第二个stu1,系统调用的构造函数并不是系统默认的构造函数,而是调用拷贝构造函数。

 

但是如果我们这样声明

GCStudent stu;

GCStudent stu1;

stu1 = stu;

这个时候stu1和stu2都调用默认的构造函数,在stu1赋值的时候,调用系统的等号运算符重载。

其原理,一个类的对象必须调用一次构造函数,而且一个运算符肯定不可能出现歧义,因此对于第一种情况,= 号在这里只能调用默认的构造函数,而不能调用赋值运算符。