c++中拷贝构造函数的用法?

c++中拷贝构造函数的用法?说的越详细越好!... c++中拷贝构造函数的用法?说的越详细越好! 展开
 我来答
snoopylie
2012-05-30 · TA获得超过1275个赞
知道小有建树答主
回答量:2396
采纳率:33%
帮助的人:813万
展开全部
拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引凳颤用)是不可变的(const类型)。此枣卖败函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数配迅要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
笨笨De世界
2012-05-30
知道答主
回答量:30
采纳率:0%
帮助的人:9.8万
展开全部
拷贝构造函数就是实现深拷贝用的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ifaithu
2012-05-29
知道答主
回答量:7
采纳率:100%
帮助的人:3.4万
展开全部
通过一个程序理解拷贝构造函数
#include"iostream"
using namespace std;
class Student
{ private:
static int number;
public:
Student()
{number++;
show("Student");
}
Student(const Student&)
{ number++;
show("Student");
}
~Student()
{ number--;
show("~Student");
}
static void show(const char *str)
{ if(str)
cout<<str<<":";
cout<<"number="<<number<<endl;
}
};
int Student::number=0;
Student f(Student x)
{ x.show("x inside f()");
return x;
}
int main()
{ Student h1;
Student h2=f(h1);
Student::show("after call f()");
return 0;
}
运行结果
Student:number=1
Student:number=2
x inside f():number=2
Student:number=3
~Student:number=2
after call f():number=2
~Student:number=1
~Student:number=0
Press any key to continue
结果分析:开始定义一个对象 Student h1 调用构造函数使得 number++,使number=1,在调用函数f(h1)使得形参得到实参在函数体内又生成一个对象使得number=2,接掘知着调用x.show()输出x inside f():number=2;当返回 一个对象调用拷贝构造函数初族散掘兆核始化h2,使得 number=3,接着对返回对象进行析构,得到~Student:number=2,在运行Student::show("after call f()"),结束时析构两个对象 h1,h2,使得 number=1,0;注意:如果不定义拷贝构造函数系统会有默认的拷贝构造函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-07-08
展开全部
  拷贝构造函数:拷贝又称复制,因此拷贝构氏枝禅造函数又称复制构造函数,就是实现深拷贝搭渗用的。
  拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初歼尘始化。
  其唯一的参数(对象的引用)是不可变的(const类型),此函数经常用在函数调用时用户定义类型的值传递及返回。
  拷贝构造函数的形式代码如下:
  Class X
{
public:
  X();
  X(const X&);//拷贝构造函数
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式