Effective C++中文版

3 篇文章 1 订阅
2 篇文章 0 订阅

守则01:把C++看做一个语言的集合,而不是单一的语言

“C++ is a federation of languages”
早期的C++只是叫"C with classes",但发展到今天已经成为一个多重泛型编程语言(Multi-paradigm programming language),它具有4种“子语言”:

C
面向对象的C++
模板C++
STL
高效的C++编程守则取决于你所使用的“子语言”

例如:

在C中,一般使用值传递 (Pass by value)
在面向对象的C++和模板C++中,使用常量引用传递 (Pass by const reference)更加高效
对于STL,因为迭代器是基于指针构造而成,直接使用值传递即可
在不同的"子语言"中需要你用不同的策略,而非自始至终单一的方法,记住这一点对于理解学习C++这样功能强大的语言十分有帮助

守则02:尽量使用const, enum, inline, 减少宏变量#define的使用

①或者说,尽量多用编译器,少用预处理器

“Prefer the compiler to the preprocessor”
例如:

#define A 1.653
在上面这个语句中,字符串’A’是不会被编译器看到的,而编译器看到的是’1.653’,这就会导致在调试过程中,编译器的错误信息只显示’1.653’而不是’A’,让你不知从何下手。

解决方法:定义全局常量

const double A = 1.653;
使用全局常量还有一个好处:预处理器只会把每次对’A’的引用变成’1.653’而不管其是否已经存在,这就导致多次引用’A’会造成多个重复对象出现在目标代码中(Object code),造成资源浪费。

②当定义或声明全局变量时,常数指针和类的常数需要另加考虑

对于指针
对于指针要把指针本身和它指向的数据都定义为const,例如

const char* const myWord = “Hello”;
在C++中可以更方便地使用std::string这样基于char*类型的推广,例如

const std::string myWord(“Hello”);
对于类的常数
声明为类的私有静态成员,这样既保证变量只能被这个类的对象接触到,又不会生成多个拷贝

class Player{
private:
static const int numPlayer = 5;

注意,因为此处是类的成员声明范围内,所以上面只是变量的声明和初始化,而并非定义,因此如果想获取变量的地址,需要在别处另加定义。这个定义不能有任何赋值语句,因为在类内已经规定为const:

const int Player::numPlayer;

链接:https://pan.baidu.com/s/1W9JhkPIf4HI4z9YriWYeWg 密码:fo8q
在这里插入图片描述

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Effective C++ 中文版》是一本非常经典的编程书籍,主要讲解了C++编程中的一些最佳实践和编程技巧。这本书以简洁、清晰和易懂的方式呈现了大量C++编程中的问题和解决方法,帮助读者写出高效且可靠的代码。 《Effective C++ 中文版》内容涵盖了面向对象编程的各个方面,包括构造函数和析构函数、对象生存期管理、资源管理、类设计、继承和多态等。书中通过详细的代码示例和清晰的解释,向读者展示了如何避免常见的陷阱和错误,提高代码的质量和可维护性。 这本书特点之一是提供了大量的 “习惯用法” ,并通过解释其优势和劣势,帮助读者理解何时何地使用这些习惯用法。例如,书中详细介绍了使用成员函数而不是友元函数的原因、使用私有继承而不是公有继承的原因等。这些习惯用法经过作者多年的实践总结和行业经验积累,是提高代码可读性和可维护性的有效方式。 与此同时,《Effective C++ 中文版》也提供了大量的代码示例,用于演示书中讲解的原则和技巧。这些示例代码简洁明了,容易理解,有助于读者深入理解所学内容,并在实际编程中灵活应用。此外,书中还提供了书签,方便读者快速翻阅和查找所需内容,提高学习和使用效果。 总之,如果你是一位C++程序员,并且希望提高自己的编程技能和代码质量,《Effective C++ 中文版》将会是一本非常有价值的参考书。它通过简洁明了的解释和大量的实例代码,帮助你理解C++编程中的最佳实践,并教会你如何写出高效、健壮和可读性强的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值