C++复习

c++值语义、引用语义

2018-04-29  本文已影响17人  凉拌姨妈好吃
如何判断一个自定义对象是否为值语义?

判断该对象在发生拷贝时,是否需要重写operator =。

c++编译器会为类提供默认的拷贝构造函数和重载函数,一般我们不需要自己重写这些,因为只要每个数据成员都为值语义,编译器就可以调用默认的成员拷贝(浅拷贝)。

那么就引出了一个问题,一些类在实际中是不可复制的(拷贝一个线程、拷贝一个雇员也是不合理的,因为一个雇员不会变成两个雇员),但是因为c++编译器会为类提供默认的拷贝构造函数和重载函数,所以我们在编写对象的时候最好加上non-copyable。

因为类复制的不合理性,所以我们才有了引用计数这个概念。
总结来说,引用计数不单单是可以防止内存溢出,还可以避免一些无意义的对象复制。我们使用shared_pre就是将引用语义转换为值语义,因为值语义我们不需要去管理它的内存,在该释放的时候,编译器就会自动替我们释放

上一篇下一篇

猜你喜欢

热点阅读