c++拷贝构造函数

c++拷贝构造函数

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:

  • 通过使用另一个同类型的对象来初始化新创建的对象。

  • 复制对象把它作为参数传递给函数。

  • 复制对象,并从函数返回这个对象。

如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下:

#include<iostream>

using namespace std;

class Line{
	public:
		int getlength();
		Line(int len);//简单的构造函数 
		Line(const Line&obj);//拷贝构造函数
		~Line();//析构函数 
	private:
		int *ptr;
};
//成员函数的定义,包括构造函数
Line::Line(int len)
{
	cout << "调用构造函数  "<<endl; 
	//为指针分配内存
	ptr = new int;
	*ptr  = len;  
} 
Line::Line(const Line & obj)
{
	cout << "调用构拷贝造函数并为指针 ptr 分配内存" <<endl;
	ptr = new int;
	*ptr = *obj.ptr;//拷贝值 
}
Line::~Line(){
	cout <<"释放内存 " << endl;
	delete ptr;
}
int Line::getlength(){
	return *ptr;
}
void display(Line obj)
{
	cout << "Line 大小 :" << obj.getlength() << endl;	 
}
//程序的主函数 
int main()
{
	Line line(10);
	display(line);
	system("pause"); 
	return 0;
} 

运行结果为:

c++拷贝构造函数

 嗯,c中指针部分得复习,自己还没吃透,再吐槽一句,书上第一页说的没错,c++是目前编程语言中最难的语言。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114814.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm双击无反应_文件双击打不开怎么办

    pycharm双击无反应_文件双击打不开怎么办1、做法:我刚解决这个问题,你下载的应该是官方版的,然后自己加了网上下载的.jar激活成功教程插件,并添加了这个插件的路径到.vmoptions文件。打不开是因为你修改了pycharm路径上的某个文件夹名,导致一开始添加的激活成功教程插件路径改变,你只要在.vmoptions中修改为正确的插件路径即可恢复正常。2、我的.jar路径:JetbrainsCrack-2.7-release-str.jar3、在…

    2022年8月27日
    3
  • sqlserver 视图创建索引_Oracle创建索引

    sqlserver 视图创建索引_Oracle创建索引一、索引1、添加索引createindex索引对象名on索引对应表名(表内索引对象字段名);例:需创建包含userid属性的userinfo表。createindexuseridonsystem.userinfo(userid);2、删除索引dropindex索引对象名;例:dropindexuserid;二、视图(并不是真实存在的一张表)1、创建视图createview视图名(学号,姓名,科目,成绩)asselect对应在表格中的字段名from涉

    2022年9月7日
    0
  • hpe服务器安装操作系统_hp 服务器 电话

    hpe服务器安装操作系统_hp 服务器 电话服务器安装操作系统才能对服务器进行很好的操作,但是新购买的服务器要如何安装操作系统呢?其实服务器系统安装通常有两种方法:用服务器引导光盘引导安装(HPProliant系列服务器100系列设备随机光盘SupportCD没有引导安装操作系统的功能)、用操作系统光盘加载阵列卡驱动引导安装。  用操作系统光盘直接安装操作系统  通常情况下重新安装操作系统,数据盘的重要数据需要保

    2022年10月4日
    1
  • 跟着搜索引擎算法走,做用户体验的事

    跟着搜索引擎算法走,做用户体验的事

    2021年11月14日
    59
  • python新浪股票接口 历史数据_实时数据与历史数据的区别_新浪股市接口

    用Python抓取新浪的股票数据新浪默认字段中的日期字段名是day。我个人认为这很不舒服。如果是小时数据或5分钟数据称为天,是不是不舒服?所以到日期的变化实际上没有多大意义。这只是我的个人喜好。实时数据采集方法与历史数据差别不大。完整的代码地址是:。不同的是,实时数据可以用逗号分隔同时获得的多个代码。经过实验,似乎最多可以得到100张票的实时数据。链接=’。请求。urlopen(链接)。decod…

    2022年4月6日
    45
  • c语言开发ETL,【ETL开发工作内容|工作职责|ETL开发做什么】-看准网「建议收藏」

    c语言开发ETL,【ETL开发工作内容|工作职责|ETL开发做什么】-看准网「建议收藏」工具应用ETL工具的典型代表有:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle、久其ETL……开源的工具有eclipse的etl插件:cloveretl数据集成:快速实现ETLETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括:业务系统不同时期…

    2022年6月5日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号