摘要:
使用定位new创建的对象由于不能使用delete(delete[])释放内存,因此需要显示地为使用定位new运算符创建的对象调用析构函数。 1 char * buffer = new char[100]; 2 buffer * pc; 3 pc = new (buffer) JustTesting; 阅读全文
摘要:
——不注意时,重载operator+()会造成一个奇异的属性: net = force1 + force2; // 1: three Vector objects 然而,还可以这样用: force1 + force2 = net; // 2: dyslectic programming cout<< 阅读全文
摘要:
——返回引用而不是返回对象,这将避免使用复制构造函数,从而提高效率 返回对象的引用: 引用指向的对象应该在调用函数执行时存在,或位于堆(new)中 返回const引用: 若形参是const引用,且返回传入的对象的引用,那么只能返回对象的const引用 返回非const的引用: 两种常见情形:重载赋值 阅读全文
摘要:
默认的逐成员复制和赋值行为(复制构造函数、赋值运算符)有一定的智能。如将一个Magazine对象复制或赋值给另一个Magazine对象,逐成员复制将使用成员定义的复制构造函数和赋值运算符。 如果Magazine类因为其它成员需要定义复制构造函数和赋值运算符,这些函数就必须显示地调用对象成员的复制构造 阅读全文