C++中Effective C++:理解operator new与类继承的复杂性

3星 · 超过75%的资源 需积分: 0 2 下载量 62 浏览量 更新于2024-07-22 收藏 516KB PDF 举报
"《Effective C++》中文版是一本深入探讨C++编程实践的书籍,特别是针对那些已经熟悉C语言的程序员,它强调了从C向C++转变时的一些关键原则和最佳实践。章节7详细讨论了`operator new`函数内部的无限循环,该函数负责内存分配,当内存不足时,会进入一个while(1)循环,直到满足分配条件(如获得更多内存、安装新错误处理器等)才终止。这揭示了新错误处理器在内存管理中的重要性,确保了程序的正常执行。 书中提到,`operator new`常常被子类继承,带来一定的复杂性,因为它们通常针对特定类设计,而非所有类。函数需要知道要分配的内存大小(`size`参数),这对于正确地创建对象至关重要。然而,如果子类不正确地处理这个行为,可能导致意外的行为或内存泄漏。 条款1强调了在C++中使用`const`和`inline`的重要性,而不是依赖`#define`。作者提倡使用编译器提供的特性,因为预处理器宏可能导致难以追踪的问题。例如,`#define`常量替换会在编译前发生,使得错误信息变得难以理解,而且在调试过程中符号调试器也无法识别。正确的做法是使用`const`来声明常量,如`const double ASPECT_RATIO = 1.653`,同时注意在定义指针常量时,不仅需要指针指向的类型是const,指针本身也应为const,以确保代码的清晰和一致性。 《Effective C++》中文版帮助程序员理解和适应C++语言的新特性和最佳实践,避免了从C到C++转变时可能出现的陷阱,提高了代码质量。"