成都网站建设设计

将想法与焦点和您一起共享

C++中赋值函数和拷贝构造函数(举例说明)-创新互联

拷贝构造函数发生在对象还没有创建,需要创建时

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、纳溪网络推广、微信小程序开发、纳溪网络营销、纳溪企业策划、纳溪品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联建站为所有大学生创业者提供纳溪建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

如:   MyClass obj1(1);

          MyClassobj3 = obj1;

赋值操作符重载仅发生在对象已经执行过构造函数,即已经创建的情况下

如:

               MyClass obj1(1);

                MyClass obj3;

               obj3 = obj1;

具体代码如下:

class MyClass

{

public:

               MyClass( int i = 0)

               {

                               cout << i;

               }

               MyClass( const MyClass &x)

               {

                               cout << 2;

               }

                MyClass &operator=(const MyClass & x)

               {

                               cout << 3;

                                return *this ;

               }

               ~MyClass()

               {

                               cout << 4;

               }

};

int main()

{

                MyClass obj1(1);

                MyClass  obj2(2);

                MyClass obj3;

               obj3 = obj1;

                return 0;

}

输出:1203444

先创建对象obj1,调用构造函数并初始化为1,输出1

再创建对象obj2,调用构造函数并初始化为2,输出2

创建对象obj3,调用构造函数,使用默认值为0,输出0

obj1赋值给obj3时,调用赋值函数,输出3

再依次析构,析构的顺序和调用构造的顺序相反

先析构obj3,在析构obj2,最后析构obj1

class MyClass

{

public:

               MyClass( int i = 0)

               {

                               cout << i;

               }

               MyClass( const MyClass &x)

               {

                               cout << 2;

               }

                MyClass &operator=(const MyClass & x)

               {

                               cout << 3;

                                return *this ;

               }

               ~MyClass()

               {

                               cout << 4;

               }

};

int main()

{

                MyClass obj1(1);

                MyClass   obj2(2);

                MyClass obj3 = obj1;

                return 0;

}

输出:122444

依次创建对象obj1,obj2,调用两次构造,分别输出初始化的值1,2

MyClass obj3 = obj1;由于赋值的时候obj3还没有创建,所以会调用拷贝构造函数,输出2

再依次析构三个对象

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


文章名称:C++中赋值函数和拷贝构造函数(举例说明)-创新互联
文章链接:http://chengdu.cdxwcx.cn/article/deijog.html