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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [Arm]使用modprobe时 “modprobe: can‘t change directory to …”

    [Arm]使用modprobe时 “modprobe: can‘t change directory to …”最近在加载一个叫dmatest的模块时,报错modprobe:can’tchangedirectoryto’…’:Nosuchfileordirectory,做一个问题记录。首先,modprobe的解释:modprobe是linux的一个命令,可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若…

    2025年7月5日
    3
  • 大数据运维面试题整理

    大数据运维面试题整理HDFS总结:1、HDFS是如何解决大规模数据的存储和管理的2、HDFS的架构原理和各核心组件的作用及关系3、HDFS文件系统数据的读写流程4、HDFS的HA的架构原理及核心5、HDFS的Federation机制6、HDSF的HA和Federation的区别…

    2022年5月20日
    79
  • 跨境上网_数据跨境传输

    跨境上网_数据跨境传输多粒度网络(MGN)的结构设计与技术实现云从科技多粒度网络公开介绍:(一)多粒度网络(MGN)设计思路。设计思想是这样子的,一开始是全局特征,把整张图片输入,我们提取它的特征,用这种特征比较Loss或比较图片距离。但这时我们发现有一些不显著的细节,还有出现频率比较低的特征会被忽略。比如衣服上有个LOGO,但不是所有衣服上有LOGO,只有部分人衣服上有LOGO。全局特…

    2022年10月6日
    3
  • LWIP使用解析_lwip tcp

    LWIP使用解析_lwip tcp1:环境STM32F407RT-thread2:结构体使用最上层:structrt_stm32_ethstructrt_stm32_eth{/*inheritfromethernetdevice*/structeth_deviceparent;/*interfaceaddressinfo,hwaddress*/rt_uint8_tdev_addr[MAX_ADDR_LEN];/*ETH_Speed*/

    2025年6月21日
    3
  • 实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】

    实现PC视频播放最强画质教程( Potplayer播放器+MADVR插件)【转】转自:http://www.hangge.com/blog/cache/detail_1461.html一、MADVR介绍MADVR 是一款超强的视频插件,其配合高清播放软件,可以做到目前 PC 上播放高清视频的最强画质。MADVR 这款视频渲染器比市面上大多数播放器自带的渲染器有着更精确的颜色处理,更高质量的图像缩放缩放、以及更低的颜色错误率。这就使得它所渲染出来的视频在颜色上更…

    2025年11月15日
    2
  • mysql分区之range分区「建议收藏」

    mysql分区之range分区「建议收藏」随着互联网的发展,各方面的数据越来越多,从最近两年大数据越来越强的呼声中就可见一斑。我们所做的项目虽算不上什么大项目,但是由于业务量的问题,数据也是相当的多。数据一多,就很容易出现性能问题,而为了解决这个问题我们通常很容易想到集群、分片等。但是在某些时候却不一定必须要用集群、分片,也可以适当的使用数据分区。什么是分区?(以下引用自:http://wangweiak47.blog.51

    2022年5月7日
    42

发表回复

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

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