解析c++中的默认operator=操作的详解

所属分类: 软件编程 / C 语言 阅读数: 94
收藏 0 赞 0 分享

在c++中,如果没有定义operator=操作,编译器会提供一个默认的operator=操作。由于operator=操作和拷贝构造函数的功能类似,都执行拷贝操作。因此,编译器也分提供无用的默认operator=操作和非无用的默认operator=操作。并且什么时候提供非无用的默认operator=操作和无用的等操作的情形也和拷贝构造函数类似。(详细分析过程请参考《基于c++中的默认拷贝函数的使用详解》)

对于一个类,编译器会提供非无用的operator=操作的情形:

1 该类是含有虚成员函数(继承自虚基类,或者继承的基类含有虚成员函数也属于这种情况)

2 该类继承的基类自定义了operator=操作(如果基类没有自定义operator=操作,但是编译器会为基类提供非无用的默认operator=操作,也属于这种情况。这就是说,只要基类有一个非无用的operator=操作就行,不管这个非无用operator=操作是自定义的,还是编译器提供的都行)

3 该类含有成员对象,该成员对象自定义了operator=操作(如果成员对象没有自定义operator=操作,但是编译器会为成员对象变量提供非无用的默认operator=操作,也属于这种情况。这就是说,只要成员对象变量有一个非无用的operator=操作,不管这个非无用的operator=操作是自定义的,还是编译器提供的,都行)


并且,如果类自定义了operator=操作,编译器只是负责调用,不会额外提供任何拷贝过程;对于编译器提供的默认operator=操作,不管是无用的还是非无用的,都只执行浅拷贝。

更多精彩内容其他人还在看

从汇编看c++中变量类型的深入分析

本篇文章是对c++中的变量类型进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

从汇编看c++的默认析构函数的使用详解

本篇文章是对c++中默认析构函数的使用进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

基于c++中的默认拷贝函数的使用详解

本篇文章对c++中默认拷贝函数的使用进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

解析c++中的默认operator=操作的详解

本篇文章是对c++中的默认operator=操作的应用进行了详细的分析介绍。需要的朋友参考下
收藏 0 赞 0 分享

解析c++中参数对象与局部对象的析构顺序的详解

本篇文章是对c++中参数对象与局部对象的析构顺序进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入c++中临时对象的析构时机的详解

本篇文章对c++中临时对象的析构时机进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

解析内存对齐 Data alignment: Straighten up and fly right的详解

对于所有直接操作内存的程序员来说,数据对齐都是很重要的问题.数据对齐对你的程序的表现甚至能否正常运行都会产生影响
收藏 0 赞 0 分享

深入内存对齐的详解

本篇文章是对内存对齐进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入C语言把文件读入字符串以及将字符串写入文件的解决方法

本篇文章是对C语言把文件读入字符串以及将字符串写入文件的方法进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享

深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解

本篇文章对Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)进行了详细的分析介绍,需要的朋友参考下
收藏 0 赞 0 分享
查看更多