天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 35|回复: 0

c++_拷贝构造函数

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
拷贝构造又叫复制构造;如果没有实现拷贝构造函数,c++会自动生成一个,叫做隐式拷贝构造函数.该自动生成的隐式拷贝构造也能应付绝大部分情况.

拷贝构造函数的格式:

//定义
class CTest
{
public:

CTest(intxx=0,intyy=m)(X=xx;Y=yy;)

CTest(const CTest & p);

int getX(){return X;}

int getY(){return Y;}

private:

int X;
int Y;
};

//拷贝构造的实现
CTest::CTest(const CTest& p)
{
X = p.X;
Y = p.Y;
std::cout<<"拷贝构造函数调用"<<std::endl;  
}
拷贝构造函数的调用:

1)一个对象用于给另外一个对象进行初始化(常称为赋值初始化);

CTest testA = new CTest(10,20);
CTest testB = testA ;
或者
CTest TestC(testA );
2)一个对象作为函数参数,以值传递的方式传入函数体;

//参数是对象,是值传递,会调用拷贝构造函数  
int GetValue(CTest aa)   
{  
    return aa.getX();  
}


//错误示范:如果参数是引用类型,本身就是引用传递,所以不会调用拷贝构造函数
int GetValue(CTest & aa)   
{  
    return aa.getX();  
}
3)一个对象作为函数返回值,以值传递的方式从函数返回;

//返回值是对象类型,会调用拷贝构造函数。会调用拷贝构造函数,因为函数体内生成的对象aa是临时的,离开这个函数就
//消失了。所有会调用拷贝构造函数复制一份。
CTest GetX()        
{  
    CTest aa(11,20);  
    return aa;  
}  


//会调用拷贝构造函数,因为函数体内生成的对象aa是临时的,离开这个函数就消失了。所有会调用拷贝构造函数复制一份。
CTest & GetX()   
{  
    CTest  aa(1);  
    return aa;  
}

 

 

 

 

c++_拷贝构造函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 11:34 , Processed in 0.141370 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表