
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。解析在赋值 *** 作中,将发生对象的复制 *** 作,但并不说明两者是完全一样的。一般情况下,如果给类定义了赋值 *** 作符,则应该同时定义合适的复制构造函数,除非系统默认生成的复制构造函数满足赋值 *** 作。实际上,系统默认的复制构造函数仅仅将数据成员进行简单的对应赋值,而在多数特殊应用中,需要程序员重新定义复制构造函数。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)