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)
上一篇 2021年9月29日 下午10:00
下一篇 2021年9月29日 下午10:00


相关推荐

  • 缅怀金庸 || 这些年你打过的金庸游戏

    缅怀金庸 || 这些年你打过的金庸游戏微信公众号 酷玩区块 飞雪连天射白鹿 笑书神侠倚碧鸳 这是金庸老先生小说作品首字母连起来 形成的一句朗朗上口的诗句 尽管我们还没有从 2018 年 10 月 25 日年仅 50 岁的李咏就因为癌症英年早逝命运无常的感叹中走出来 2018 年 10 月 30 日晚 18 55 分 据港媒报道 武侠小说泰斗作家查良镛 笔名金庸 逝世于香港养和医院 享年 94 岁 人们纷纷哀痛并发文悼念 金庸老先生生前的作品受到了几代

    2026年3月19日
    2
  • idea创建Java web项目_idea导入maven项目

    idea创建Java web项目_idea导入maven项目准备:1.安装jdk1.72.安装tomcat1.8一、创建并设置javaweb工程1.创建javaweb工程File–>New–>Project…设置工程名字:创建完成后工程结构如下: 2.Web工程设置2.1在WEB-INF目录下点击右键,New–>Directory,创

    2026年1月29日
    4
  • 数据挖掘十大算法详解

    数据挖掘十大算法详解转自:https://wizardforcel.gitbooks.io/dm-algo-top10/content/index.html

    2022年5月29日
    34
  • AutoGluon教程常见问题:如何处理训练中的内存不足问题?

    AutoGluon教程常见问题:如何处理训练中的内存不足问题?

    2026年3月12日
    1
  • ThreadPoolExcutor(线程池)

    ThreadPoolExcutor(线程池)1、概念:   用于管理java的多线程。线程的生命周期包括创建、就绪、运行、阻塞、销毁,当有大量的线程任务需要创建时,内存的开销就大了,此时,使用线程池,在一定程度上能够很好的缓解线程的大开销。2、优势:    (1)降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。   (2)提高响应速度。当任务到达时,任务可以不需要等到线程

    2025年7月11日
    7
  • selenium chrome驱动对应版本

    selenium chrome驱动对应版本http://chromedriver.storage.proxy.ustclug.org/index.html

    2022年6月16日
    33

发表回复

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

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