构造和拷贝构造函数

A642413977 2009-03-23 02:47:22
构造函数和拷贝构造函数有什么区别啊?
...全文
156 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
A642413977 2009-04-10
  • 打赏
  • 举报
回复
经典啊
A642413977 2009-04-10
  • 打赏
  • 举报
回复
不错!
liwenchao0309 2009-03-23
  • 打赏
  • 举报
回复
我刚看完书上的这块,感觉还是看书详细!
建议看看书
zgjxwl 2009-03-23
  • 打赏
  • 举报
回复
一般性与特殊性的关系。
hylove9494 2009-03-23
  • 打赏
  • 举报
回复
巩固知识,把书好好看看
mengde007 2009-03-23
  • 打赏
  • 举报
回复
为什么不去看看书呢……
ypb362148418 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hairetz 的回复:]
构造函数和拷贝构造函数

拷贝构造函数是构造函数的一种。

拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方…
[/Quote]


区别不是很大
zmsun 2009-03-23
  • 打赏
  • 举报
回复
//构造函数
CStr::CStr(const char *str)
{
if(NULL == str)
{
m_data = new char[1];
*m_data = '\0';
}
else
{
int length = strlen(str);
m_data = new char[length + 1];
if(m_data != NULL)
{
strcpy(m_data, str);
}
}

//拷贝构造函数
CStr::CStr(const CStr &other)
{
int length = strlen(other.m_data);
m_data = new char[length + 1];
if(m_data != NULL)
{
strcpy(m_data, other.m_data);
}
}

downmooner 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 arong1234 的回复:]
没有所谓的“赋值构造函数”这种说法,也不存在你说的区别
引用 3 楼 downmooner 的回复:
应该问复制构造函数和赋值构造函数区别.....

[/Quote]

呵呵 恩咯.我不大熟悉了.
我是想说复制构造函数与赋值操作符
  • 打赏
  • 举报
回复
构造函数和拷贝构造函数

拷贝构造函数是构造函数的一种。

拷贝构造函数,经常被称作X(X&),是一种特殊的构造函数,他由编译器调用来完成一些基于同一类的其他对象的构件及初始化。它的唯一的一个参数(对象的引用)是不可变的(因为是const型的)。这个函数经常用在函数调用期间于用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。
在C++中,下面三种对象需要拷贝的情况。因此,拷贝构造函数将会被调用。
1). 一个对象以值传递的方式传入函数体
2). 一个对象以值传递的方式从函数返回
3). 一个对象需要通过另外一个对象进行初始化
tangshuiling 2009-03-23
  • 打赏
  • 举报
回复

都是构造函数,构造对象时会被调用这毋庸置疑,但两者被调用的时机不同。既然叫copy构造,换
一种说法就是必须有对象被构造好了,再以此为模板进行拷贝,否则,不可能子虚乌有来个COPY
普通的构造函数自然就是能够产生对象的一个函数啦,简单的例子:
class A
{
};
A a; 调用普通的构造函数以构造对象a
A b(a);以对象a为模板调用copy构造函数构造对象b
A b=a;与上面相同,写法不同而已
更深层次的东东,楼主还是自行查找资料
arong1234 2009-03-23
  • 打赏
  • 举报
回复
没有所谓的“赋值构造函数”这种说法,也不存在你说的区别
[Quote=引用 3 楼 downmooner 的回复:]
应该问复制构造函数和赋值构造函数区别.....
[/Quote]
downmooner 2009-03-23
  • 打赏
  • 举报
回复
应该问复制构造函数和赋值构造函数区别.....
lgccaa 2009-03-23
  • 打赏
  • 举报
回复
这些概念的东西还是自己啃书吧
arong1234 2009-03-23
  • 打赏
  • 举报
回复
构造是所有构造函数的统称
拷贝构造是构造函数的一种,它是用同类型对象来初始化另外一个对象的特定构造函数

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧