C++复制控制之复制构造函数

发表于:2012-11-20 09:52

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:zhy_cheng    来源:51Testing软件测试网采编

  只有单个形参,而且该形参是本类类型对象的引用(常用const修饰),这样的构造函数称为复制构造函数。与默认的构造函数一样,复制构造函数由编译器隐式调用。

  如果我们没有定义复制构造函数,编译器就会为我们合成一个。与合成的默认构造函数不同,即使我们定义了其他构造函数,也会合成复制构造函数,合成复制构造函数将逐个成员初始化。

  下面是代码:Student.h头文件

#if !defined(AFX_STUDENT_H__334531D3_6CD2_48F8_BDE2_98A82D166466__INCLUDED_)
#define AFX_STUDENT_H__334531D3_6CD2_48F8_BDE2_98A82D166466__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <string>
class Student 
{
public:
 Student();
 Student(Student&);
 virtual ~Student();
 std::string name;
 unsigned int no;

};

#endif

  Student.cpp源文件:

#include "Student.h"

 

Student::Student()
{

}

Student::~Student()
{

}
Student::Student(Student& s)
{
 this->name=s.name;
 this->no=s.no;
}

  Main.cpp源文件中包含main函数:

#include <iostream>
#include "Student.h"
using namespace std;
int main()
{

 Student s;
 s.name="zhy_cheng";
 s.no=32;
 Student liu(s);     //这里默认调用复制构造函数
 cout<<liu.name<<endl<<liu.no<<endl;
 return 0;
}

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号