作者:[美] Robert C. Seacord 出版社:人民邮电出版社 原作名:Effective C: An Introduction to Professional C Programming 译者:王林生 出版年:2023-4 页数:208 装帧:平装 丛书:图灵程序设计丛书·C/C++系列 ISBN:9787115612953 豆瓣评分 评价人数不足 ...
C++可以被看作是由四个次级语言组成的联邦: C语言部分:C++最初是从C语言发展而来的,因此保留了C语言的一些特性。这包括预处理指令、数组和指针等。C语言的这些特性在C++中得到了继承和扩展。 面向对象的C++:C++引入了面向对象编程的概念,包括封装、继承和多态。这使得我们可以更好地组织和管理代码,并实现更高层次...
effective c++一书的章节安排 第一章标题是让自己习惯C++,其实内容主要是和C语言的对比,如C++的五种编程模型 如何使用const 取代c中的#define,enum hack,inline函数等。 条款1 强调了C++作为一个语言联邦,包含了C的面向过程,面向对象,泛型编程,和函数形式和元数据编程五个范型。然后强调了学习C++的四个非常重要的...
上述代码的问题不在于Airplane::fly有默认实现,而在于ModelC在未明确要调用的情况下就继承了该默认的实现。我们可以通过切断虚函数接口和默认实现之间的直接关系来避免上述的不安全行为。 为默认实现定义一个独立的函数,具体做法是将函数声明为纯虚函数来提供接口,另外定义一个独立的defaultFly函数来提供默认的实现。 cl...
const返回值:避免(a*b)=c的错误; const参数:传递指向常量的引用; const成员函数:允许const属性的重载。 四、对象使用前初始化 构造函数成员初始化列表; 使用时调用,单例模式,多线程不安全。 (二)、构造/析构/赋值运算 五、C++默认编写的函数 默认构造、复制构造、析构、赋值运算符。
double result1 = ((double)firstNumber) / secondNumber; // C风格 double result2 = static_cast(firstNumber) / secondNumber; // C++风格类型转换 SpecialWidget sw; // sw是一个非const对象 const SpecialWidget& csw = sw; // csw是sw的一个引用,它是一个const对象 ...
在C中,一般使用值传递 (Pass by value) 在面向对象的C++和模板C++中,使用常量引用传递(Pass by const reference)更加高效 对于STL,因为迭代器是基于指针构造而成,直接使用值传递即可 在不同的"子语言"中需要你用不同的策略,而非自始至终单一的方法,记住这一点对于理解学习C++这样功能强大的语言十分有帮助 ...
virtual析构函数即可。class不含virtual函数,通常表示它并不愿意被用作一个base class。欲实现出virtual函数,对象必须携带某些信息,主要用来在运行期决定哪一个virtual函数该被调用。无端的将所有classes的析构函数声明为virtual,也是错误的。心得是:只有当class内含至少一个virtual函数,才为它声明virtual函数。
如果使用C part of C++而且初始化可能招致运行期成本,那么就不保证发生初始化。一旦进入non-C part of C++,规则有些变化。这就很好的解释了为什么array(来自C part of C++)不保证其内容被初始化,而vector(来自STL part of C++)却有此保证。 最佳的处理方法就是:永远在使用对象之前先将它初始化。