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

寂寞莫相离

寂寞莫相离

2016-02-19 09:21

有了下面这个解析c++中的默认operator=操作的详解教程,不懂解析c++中的默认operator=操作的详解的也能装懂了,赶紧get起来装逼一下吧!

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

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

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

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

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
解析c++中的默认operator=操作的详解

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

编程语言 网络编程
基于c++中的默认拷贝函数的使用详解

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

c++中const的使用详解

编程语言 网络编程
c++中const的使用详解

C++中sprintf()函数的使用详解

编程语言 网络编程
C++中sprintf()函数的使用详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

深入C++中API的问题详解

编程语言 网络编程
深入C++中API的问题详解

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

编程语言 网络编程
从汇编看c++的默认析构函数的使用详解

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

MSSQL SERVER中的BETWEEN AND的使用

MSSQL SERVER中的BETWEEN AND的使用

让回调函数 showResponse 也带上参数的代码

让回调函数 showResponse 也带上参数的代码
下拉加载更多内容 ↓