摘要:
class的"operator 返回类型 ()" 的重载 就是对(class)的重载,这个重载符不用参数,参数就是自身,并且与函数传递的参数括号等价如func(c), 并且多个参数也适用 如 void func(class c, int i ) 等价 void func( (c),( i ) )class的 "operator()" 的重载 是对 class()的重载,两者不同。如 class(1), class(2) ……#include using namespace std;class C1{public: C1(int k):i(k){} //( 阅读全文
摘要:
浅拷贝 拷贝的是对象的引用、指针等地址深度拷贝 在新地址 新空间 完全拷贝对象的成员和对象本身一个是给房门钥匙一个是新盖一个房子 阅读全文
摘要:
今天学习Effective c++学习 explicit 关键字:如果有个类class C{public: C(int i):v(i){} int v;}那么当 C c = 12;语句时,构造函数可以发生隐式转换,等价于 C c(12),这是构造函数的特征之一。explicit关键字可以避免隐式转换 explicit C(int i):v(i){} 阅读全文
摘要:
转载 http://www.2cto.com/kf/201305/209871.html 条款11: 为需要动态分配内存的类声明一个拷贝构造函数和一个赋值操作符 这个条款的原因在哪里呢? 就是如果你创建一个类,什么都不做,那么类会给你创建一个默认构造函数,默认析构函数,默认拷贝函数和默认赋值函数。 所以出问题就出在默认上面去了,尤其是默认拷贝函数和默认赋值函数出的问题最多。 默认拷贝函数会怎么做呢,对于a=b,它会将b中的成员逐位拷贝给另一个a,如果通过指针动态分配内存,则仅仅将指针的值赋给a。 这会导致至少两个问题: 第一,b曾指向的内存永远不会被删除,因而会永远丢失。这是产生内存泄漏的典. 阅读全文