摘要: class Queue { private: Queue(const Queue & q) : qsize(0) {} // preemptive definition 伪私有方法 Queue & operator = (const Queue & q) { return *this; } // p 阅读全文
posted @ 2020-06-15 21:29 孱陵 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 如果new无法创建新节点,它将引发异常,最终的结果是,除非提供了处理异常的代码,否则程序将终止 阅读全文
posted @ 2020-06-15 21:17 孱陵 阅读(226) 评论(0) 推荐(0) 编辑
摘要: ——调用构造函数时,对象将在括号中的代码执行前被创建,因此无法在括号内初始化对象的常量成员。 Queue::Queue(int qs) { front = rear = NULL; items = 0; qsize =qs; // not acceptable! qsize是一个常量成员 } 因此C 阅读全文
posted @ 2020-06-15 21:11 孱陵 阅读(2027) 评论(0) 推荐(0) 编辑
摘要: ——C++的一项特性是在类中嵌套结构或类声明 在类声明中声明的结构、类或枚举被称为是被嵌套在类中,其作用域为整个类。这种声明不会创建数据对象,而只是指定了可以在类中使用的类型。 class Queue { struct Node { Item item; struct Node * next; }; 阅读全文
posted @ 2020-06-15 20:32 孱陵 阅读(834) 评论(0) 推荐(0) 编辑
摘要: 使用定位new创建的对象由于不能使用delete(delete[])释放内存,因此需要显示地为使用定位new运算符创建的对象调用析构函数。 1 char * buffer = new char[100]; 2 buffer * pc; 3 pc = new (buffer) JustTesting; 阅读全文
posted @ 2020-06-15 20:21 孱陵 阅读(571) 评论(0) 推荐(0) 编辑
摘要: ——不注意时,重载operator+()会造成一个奇异的属性: net = force1 + force2; // 1: three Vector objects 然而,还可以这样用: force1 + force2 = net; // 2: dyslectic programming cout<< 阅读全文
posted @ 2020-06-15 12:32 孱陵 阅读(895) 评论(0) 推荐(0) 编辑
摘要: ——返回引用而不是返回对象,这将避免使用复制构造函数,从而提高效率 返回对象的引用: 引用指向的对象应该在调用函数执行时存在,或位于堆(new)中 返回const引用: 若形参是const引用,且返回传入的对象的引用,那么只能返回对象的const引用 返回非const的引用: 两种常见情形:重载赋值 阅读全文
posted @ 2020-06-15 11:16 孱陵 阅读(1451) 评论(0) 推荐(0) 编辑
摘要: 默认的逐成员复制和赋值行为(复制构造函数、赋值运算符)有一定的智能。如将一个Magazine对象复制或赋值给另一个Magazine对象,逐成员复制将使用成员定义的复制构造函数和赋值运算符。 如果Magazine类因为其它成员需要定义复制构造函数和赋值运算符,这些函数就必须显示地调用对象成员的复制构造 阅读全文
posted @ 2020-06-15 10:55 孱陵 阅读(202) 评论(0) 推荐(0) 编辑