广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++编程析构函数拷贝构造函数使用示例详解
  • 386
分享到

C++编程析构函数拷贝构造函数使用示例详解

2024-04-02 19:04:59 386人浏览 八月长安
摘要

目录构造函数析构函数拷贝构造之深拷贝和浅拷贝深浅拷贝区别首先定义一个类进行操作。 class MM { public: protected: int year;

首先定义一个类进行操作。


class MM
{
public:
protected:
    int year;
    string name;
}

构造函数在类中默认有一个无参的构造函数

默认的构造函数为 类名(){};这个构造函数

如果直接写了构造函数那么这个构造函数将会没有

构造函数


class MM
{
public:
	//MM() {};//无参构造函数
	MM(int year, string name) :year(year), name(name) {};
	//有参构造函数 在定义对象的时候必须传参数,没参数会报错
	MM(int year, string name)
	{
		this->name = name;
		this->year = year;
	}//这两个是一样的
	MM(int year, string name = "") :year(year) {};
	//因为string 是缺省的 如果写没有构造默认为空
    就是 MM mm(15);这里mm对象year=15 name=“”;
	//缺省只能左边到右边
 protected:
	int year;
	string name;
};

析构函数

MM(){};就是对构建的对象进行销毁

 析构函数的使用是一个自动调用的过程不需要人为进行,当对象的生命周期结束自动释放

 //析构函数需要注意的点

1.当对象存在指针的时候使用析构函数时,析构函数里面需要释放指针的指向


class MM
{
public:
	MM(const char* str)
	{
		strcpy(this->str, str);
	}
	~MM() { delete[] str; };
//这里需要释放str内存不然析构函数只会释放类不会释放str
	
protected:
	int year;
	string name;
	char* str;
};
int main()
{
	MM mm("kkk");
	return 0;
}

如果类中没有指针就不用在析构函数中去释放指针指向

拷贝构造(对对象进行赋值)//直接调用拷贝构造不调用构造函数


	MM mm(15,"kkk");
	//拷贝构造的二种方式对对象进行赋值
	MM mm1(mm);
	MM mm2 = mm;
	mm1.printfMM();
	mm2.printfMM();

如果是通过匿名创建时匿名对象调用构造函数


MM mm3 = MM(16, "jfsdl");
	mm3.printfMM();

然后匿名对象赋值给对象调用的是拷贝构造函数

拷贝构造之深拷贝和浅拷贝


//浅拷贝 默认也是浅拷贝就是赋值拷贝
	MM(const MM&object)
	{
		this->str = object.str;
	}
//深拷贝
//深拷贝就是通过指针申请指向然后进行赋值
	MM(const MM& object)
	{
		int len = strlen(object.str) + 1;
		this->str = new char[len];
		strcpy(str, object.str);
	}

深浅拷贝区别

浅拷贝就是进行了赋值操作

深拷贝是通过申请指针后再进行赋值(深拷贝析构函数要释放申请的指针)

谢谢大家的阅读,如有不足请及时指出,万分感激

以上就是c++编程析构函数拷贝构造函数使用示例详解的详细内容,更多关于C++编程析构函数拷贝构造函数的资料请关注编程网其它相关文章!

--结束END--

本文标题: C++编程析构函数拷贝构造函数使用示例详解

本文链接: https://www.lsjlt.com/news/157662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++编程析构函数拷贝构造函数使用示例详解
    目录构造函数析构函数拷贝构造之深拷贝和浅拷贝深浅拷贝区别首先定义一个类进行操作。 class MM { public: protected: int year; ...
    99+
    2022-11-12
  • C++拷贝构造函数(深拷贝与浅拷贝)详解
    对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝...
    99+
    2022-11-15
    拷贝构造函数 深拷贝 浅拷贝
  • C++中的拷贝构造函数详解
    目录C++拷贝构造函数(复制构造函数)详解1) 为什么必须是当前类的引用呢?2) 为什么是 const 引用呢?默认拷贝构造函数总结C++拷贝构造函数(复制构造函数)详解 拷贝和复制...
    99+
    2022-11-13
  • C++超详细讲解拷贝构造函数
    目录构造函数特征编译器生成的拷贝构造拷贝构造的初始化列表显式定义拷贝构造的误区结论构造函数 只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对...
    99+
    2022-11-13
  • c++详细讲解构造函数的拷贝流程
    #include <iostream> #include <string> using namespace std; void func(string str...
    99+
    2022-11-13
  • C++拷贝构造函数怎么使用
    本文小编为大家详细介绍“C++拷贝构造函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++拷贝构造函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。构造函数只有单个形参,该形参是对本类类型对...
    99+
    2023-06-30
  • C++中拷贝构造函数的使用
    目录拷贝构造函数1. 手动定义的拷贝构造函数2. 合成的拷贝构造函数总结拷贝构造函数 拷贝构造函数,它只有一个参数,参数类型是本类的引用。复制构造函数的参数可以是 const 引用,...
    99+
    2022-11-13
  • C++中拷贝构造函数的总结详解
    1.什么是拷贝构造函数: 拷贝构造函数嘛,当然就是拷贝和构造了。(其实很多名字,只要静下心来想一想,就真的是顾名思义呀)拷贝又称复制,因此拷贝构造函数又称复制构造函数。百度百科上是这...
    99+
    2022-11-15
    拷贝构造函数 C++
  • C++构造函数的类型,浅拷贝与深拷贝详解
    目录一、无参构造函数二、含参构造函数三、拷贝构造函数四、深拷贝和浅拷贝总结一、无参构造函数 1.如果没有定义构造函数,则系统自动调用此默认构造函数,且什么都不做。 2.如果用户自定义...
    99+
    2022-11-13
  • C++构造函数的类型,浅拷贝与深拷贝实例分析
    本文小编为大家详细介绍“C++构造函数的类型,浅拷贝与深拷贝实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++构造函数的类型,浅拷贝与深拷贝实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、无...
    99+
    2023-06-29
  • C++:构造函数,析构函数详解
    目录前言一、面向对象二、构造函数1.基本概念2.构造函数重载1.构造函数分类2.有参构造函数:3.有参构造函数3个调用规则:4.拷贝构造函数5.析构函数总结前言 上期了解C++类中有...
    99+
    2022-11-12
  • C++实现拷贝构造函数的方法详解
    目录引入一.什么是拷贝构造函数二.什么情况下使用拷贝构造函数三.使用拷贝构造函数需要注意什么四.深拷贝浅拷贝4.1 浅拷贝4.2 深拷贝引入 对于普通类型的对象来说,他们之间的复制很...
    99+
    2022-11-13
  • C++的拷贝构造函数你了解吗
    目录一般情况下的拷贝构造函数:默认拷贝构造函数:浅拷贝和深拷贝:总结拷贝构造函数用以将一个类的对象拷贝给同一个类的另一个对象,比如之前学习过的string类: string s1; ...
    99+
    2022-11-13
  • C++中的拷贝构造函数怎么用
    小编给大家分享一下C++中的拷贝构造函数怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!C++拷贝构造函数(复制构造函数)详解拷贝和复制是一个意思,对应的英文...
    99+
    2023-06-29
  • C++拷贝构造函数中的陷阱怎么解决
    这篇文章主要讲解了“C++拷贝构造函数中的陷阱怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++拷贝构造函数中的陷阱怎么解决”吧!拷贝构造函数大家都比较熟悉,通俗讲就是传入一个对象...
    99+
    2023-06-26
  • C++构造函数与析构函数怎么使用
    这篇文章主要讲解了“C++构造函数与析构函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++构造函数与析构函数怎么使用”吧!对象的初始化和清理生活中我们买的电子产品都基本会有出厂...
    99+
    2023-07-02
  • JAVA构造函数(方法)示例详解
    目录 一、什么是构造函数二、构造函数的特点三、示例四、默认构造函数五、构造函数的重载六、构造函数的使用构造函数的特点总结 一、什么是构造函数 Java构造函数,也叫构造方法,是JAV...
    99+
    2022-11-12
  • C++类与对象及构造函数析构函数基础详解
    目录C++类与对象类的定义对象的创建构造函数和析构函数访问修饰符继承多态成员变量与成员方法总结C++类与对象 C++是一门面向对象的编程语言。在C++中,我们可以利用类来创建对象,...
    99+
    2023-05-16
    C++类对象函数 c++ 构造析构函数
  • C++构造析构赋值运算函数应用详解
    目录了解C++默默编写哪些函数不想使用编译器函数为多态基类声明virtual析构函数别让异常逃离析构函数绝不在构造和析构过程中调用virtual函数令operator=返回一个ref...
    99+
    2022-11-13
  • C++中构造函数与析构函数的详解及其作用介绍
    目录构造函数默认构造函数有参构造函数析构函数析构函数例子析构函数执行时机局部对象全局对象构造函数 构造函数 (constructor) 是一种特殊的成员函数. 它会在每次创建类的新对...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作