时间:2021-05-20
C++ 中类的拷贝、赋值、销毁的实例详解
本篇文章我们一共讲解一下几个知识点:
类的拷贝构造函数。
类的拷贝赋值运算符。
类的析构。
好了one by one
如果我们没有定义类的拷贝构造函数的话,那么编译器会为我们合成默认拷贝构造函数----合成拷贝构造函数。
和成拷贝构造函数的操作是将其参数的各个成员拷贝到正在创建的对象中去,每个成员的类型决定了他是如何被拷贝的:对类类型的成员,会使用其拷贝构造函数,内置类型的成员则是直接拷贝,虽然我们不能直接拷贝一个数组,但是合成拷贝构造函数会逐个的拷贝一个数组类型的成员。
下面我们用代码演示一下合成拷贝构造函数的功能:
好了,我们定义拷贝构造函数也是如此定义的,我解释一下为什么参数表里面是一个静态的引用:
1)我们不想改变该引用的值,只是用来进行拷贝。
2)我们必须声明为引用,如果写成类的话,则又会调用该类的拷贝构造函数,在那个拷贝构造函数中又会调用拷贝构造函数,这样陷入死循环。
我们在来学习一下拷贝赋值运算符:
和拷贝构造函数一样,如果我们不定义拷贝赋值运算符的话,编译器将会为我们合成一个,我们下面用代码来模仿一下吧:
好了,我们定义拷贝赋值运算符也是如此,我们就不一一赘述了。
我来在来谈一谈;类的构造函数初始化和类的析构函数销毁过程的一些细节性问题。
1比如我们定义了一个构造函数,实际上在参数化赋值列表处及大括号之前,才是我们真正进行初始化的地方,在大括号之中做的操作只是进行了拷贝赋值操作。
这一点我们要清楚的认识到,要不然在对const对象进行初始化是就有问题了,因为const对象只能初始化。
2比如我们定义了一个析构函数,注意了,我们在() {之间的部分才是做了真正的类成员变量的析构操作,{}里面使我们进行的自定义操作,不一定是什么析构,应为析构基本已经完成了。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解C++编写String的构造函数、拷贝构造函数、析构函数和赋值函数编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:classS
详解C++中String类模拟实现以及深拷贝浅拷贝在C语言中/C++中,字符串是一个应用很广泛的类型,也是很基础的类型,C语言并没有直接处理字符串的操作而是采用
C++类中的继承实例详解实例效果:实现代码:#include#includeusingnamespacestd;classPerson{public:Perso
C++基础教程之指针拷贝详解指针是编程人员的梦魇,对C语言的开发者是如此,对C++的开发者也是如此。特别是在C++中,如果不注意处理类中的指针,非常容易出问题。
C++类继承之子类调用父类的构造函数的实例详解父类HttpUtil:#pragmaonce#include#includeusingnamespacestd;c