C++中构造函数,拷贝构造函数和赋值函数的区别

C++中构造函数,拷贝构造函数和赋值函数的区别,第1张

class A{

    //    

};

A a = new A();

A b = a;    //拷贝构造函数

A c;

c = a;        //赋值函数

构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值一个类也可以有多个构造函数,用来初始化不同形式的类。

拷贝函数是特殊的构造函数,用来完成对象初始化,即定义时赋值,下面程序中有详解。如果没有定义,系统会调用默认的拷贝构造函数,但此函数不能处理深拷贝问题,及若有new用到,系统的只是共享区域,不分配新空间。

赋值函数要用运算符重载来实现。下面有程序。

#include <iostream>

using namespace std;

class time

{

public:

time() //constructor构造函数

{

hour=0;

minute=0;

sec=0;

}

time(const time &obj) //拷贝构造函数

{

hour = objhour;

minute = objminute;

sec = objsec;

}

time& operator=(const time &obj) //运算符重载,用来完成赋值函数

{

this->hour = objhour;

this->minute = objminute;

this->sec = objsec;

return this;

}

void set_time();

void show_time();

private:

int hour;

int minute;

int sec;

};

int main()

{

class time t1; //调用time()构造函数为成员赋初值

t1show_time();

//t1set_time();

t1show_time();

time t2 = t1; //调用拷贝构造函数,为对象t2赋值

t2show_time();

time t3;

t3 = t1; //调用运算符重载=函数,为对象t3赋值

t3show_time();

return 0;

}

void time::set_time()

{

cin >>hour;

cin >>minute;

cin >>sec;

}

void time::show_time()

{

cout<<hour<<":"<<minute<<":"<<sec<<endl;

}

关于构造函数,拷贝构造函数等,百度词汇,书本上都有详解,可以认真看一下。愿学习进步!

答案:C

C。解析在赋值 *** 作中,将发生对象的复制 *** 作,但并不说明两者是完全一样的。一般情况下,如果给类定义了赋值 *** 作符,则应该同时定义合适的复制构造函数,除非系统默认生成的复制构造函数满足赋值 *** 作。实际上,系统默认的复制构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,需要程序员重新定义复制构造函数。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/12176203.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存