社区
C++ 语言
帖子详情
有关拷贝构造的用法?
cnepine
2003-10-22 03:12:03
在c++中,何时才能用到拷贝构造函数,应该如何运用拷贝构造函数?
...全文
93
5
打赏
收藏
有关拷贝构造的用法?
在c++中,何时才能用到拷贝构造函数,应该如何运用拷贝构造函数?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Flamesong
2003-10-22
打赏
举报
回复
daixinwei(无聊的我不听)说的是好的.
daixinwei
2003-10-22
打赏
举报
回复
这是一个必须自己定义拷贝构造的经典例子,由于是我自己打进来的,所以可能会出现语句错误,你自己注意一下就好了.不懂再问我!
#include<iostream.h>
#include<string.h>
class string{
private:
char *st;
public:
string(char *s)
{
str=new char[strlen(s)+1];
stcpy(str,s);
}
void print(){cout<<str<<endl;}
~string(){cout<<"delete..."<<endl;delete str;}
};
void main()
{
string s1="hello";
string s2=s1;
s1.print();
s2.pring();
}
在这个程序里就出现问题了,问题语句是:string s2=s1;
因为这个语句等价于
s2.str=s1.str;
所以在执行析构时由于s2.str和s1.str指向的都是HELLO所以HELLO要被删除两次,所以会产生错误
解决的方法是自己定义一个拷贝初始化:
string::string(string& a)
{
str=new char[strlen(a.str)+1];
strcpy(str,a.str);
}
daixinwei
2003-10-22
打赏
举报
回复
没有关系的,一般来说,很少有人会去没分的贴子!大家都要CSDN的分嘛!一样自己的问题没有人答!上面的答得不知道你明白没有,没明白,可以点一下我的名字然后留言给我,我尽力帮你,我也是个阿菜,大家互相帮忙嘛!呵呵!这个贴子你认为没有用的时候,一定记得选一下管理,然后点一下给分来结贴不然还要扣分的,呵呵!有问题可以问我!
cnepine
2003-10-22
打赏
举报
回复
谢谢你,我是这儿的Freshman,从别人那儿得知的这个地方。
现在还不是太清楚这儿的游戏规则。
不好意思的。
晴多多关照。
daixinwei
2003-10-22
打赏
举报
回复
没分没关系我帮你答
在用一个对象初始化该类的另一个对象时这个东东就有用了
有时初始的是指针,就会出现两个对象的指针指向同一个地址的情况,这时如果你将两个对象都DELETE了,就会出错,这时就需要这个东东来帮忙解决问题了,还不懂的话,留言给我,我给你一个例子.
C++构造函数、
拷贝构造
函数、析构函数的含义与
用法
摘要:构造函数是C++中用于初始化对象的特殊成员函数,必须与类同名且无返回类型。主要类型包括:1)默认构造函数(编译器自动生成);2)带参数构造函数(通过初始化列表赋值);3)
拷贝构造
函数(处理对象复制)。当类包含指针等动态资源时需自定义
拷贝构造
函数实现深拷贝,避免浅拷贝问题。析构函数在对象销毁时自动调用,负责资源释放,遵循"分配-释放"对称性原则。特别在多态基类中需声明虚析构函数。构造/析构函数共同构成了C++对象生命周期管理的核心机制。
C++
拷贝构造
函数的
用法
当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,
拷贝构造
函数就会被自动调用。也就是说,当类的对象需要拷贝时,
拷贝构造
函数将会被调用。以下情况都会调用
拷贝构造
函数:一个对象以值传递的方式传入函数体一个对象以值传递的方式从函数返回一个对象需要通过另外一个对象进行初始化。 如果在类中没有显式地声明一个
拷贝构造
函数,那么,编译器将会自动生成一个默认的
拷贝构造
函数,该构造函数完...
C/C++
拷贝构造
函数特性与
用法
分析,以及与 Java 的区别
拷贝构造
函数是 C/C++ 中面向对象编程的重要机制之一。它在对象被复制时自动调用,保证对象的成员变量正确地被复制。与 Java 的对象复制机制有本质区别,C++ 允许开发者自定义拷贝方式,实现深拷贝或浅拷贝。public://
拷贝构造
函数声明C++
拷贝构造
函数是对象复制的核心,支持深/浅拷贝,决定资源管理策略。Java 拷贝靠clone(),不推荐自定义
拷贝构造
函数,复制语义不一致,易出错。C++ 强调资源所有权和生命周期管理,Java 强调对象引用和垃圾回收。
C++进阶之
拷贝构造
函数:
用法
实例(三百零八)
本篇目的:C++进阶之
拷贝构造
函数:
用法
实例基本概念
拷贝构造
函数是C++中的特殊构造函数,用于创建一个新对象,并使用同类型的已有对象对其进行初始化。它的作用是确保新对象复制已有对象的所有成员,并保持数据的一致性。
拷贝构造
函数的参数通常是对已有对象的常引用,以避免不必要的递归调用和内存开销。
拷贝构造
函数的默认行为如果类没有显式定义
拷贝构造
函数,编译器会自动生成一个默认的
拷贝构造
函数。默认
拷贝构造
函数执行的是浅拷贝,即按成员变量的位模式进行逐个拷贝。
拷贝构造
函数的
用法
1.
拷贝构造
函数是与类名相同,其形参是本类的对象的引用。 2.
拷贝构造
函数会在以下三种情况下被调用: 1).当用类的一个对象去初始化该类的另一个对象时。 2).如果函数的形参是类的对象,调用该函数,将对象作为函数实参传递给函数的形参时。 3).如果函数的返回值是类的对象,函数执行完成,将返回值返回时。 3.浅拷贝的失败例子: 1 #include <iostream&g...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章