首页 > 编程语言 >effectiveC++1、2

effectiveC++1、2

时间:2022-11-21 07:44:05浏览次数:36  
标签:const effective enum C++ inline 替换 define

条款01 视C++为一个语言联邦

​ 在学习c++高效编程时会出现“所有的适当用法都有例外”的情况,解决的方法是:不把c++当作一门语言,而是将其视为以下四门主要次语言组成的联邦:

  • C
  • Object-Oriented C++
  • Template C++
  • STL

在不同的次语言的情况下,有着不同的高效编程准则。

条款02 尽量以const,enum,inline替换#define

​ 或者说尽量以编译器替换预处理器,使用#define的情况下,宏没有进入记号表,对于查找错误会造成很大的麻烦。

对于单纯常量而言,我们应当尽量以conse和enum替换#define,const常量会进入记号表,更加容易查找错误,并且我们可以写出专属于某个类的常量(若要实现专属且唯一,则要加static),这是#define所无法实现的,而enum在某些程度上更像#define,例如取const的对象是合法的,但取enum的对线则是非法的。

对于形似函数的宏(macros),最好改用(template) inline函数替换,这样不必为每个参数加上括号,不必担心参数被多次核算,此外,inline函数是一个真正的函数,他仅守作用域守则。

标签:const,effective,enum,C++,inline,替换,define
From: https://www.cnblogs.com/huangshihs/p/16910242.html

相关文章

  • [排序算法] 桶排序 (C++)
    桶排序解释桶排序思想桶排序是一种空间换取时间的排序方式,是非基于比较的。桶排序顾名思义,就是构建多个映射数据的桶,将数据放入桶内,对每个桶内元素进行单独排序。假设......
  • C++PrimerPlus中文第六版第8章编程练习答案
    1、#include<iostream>#include<string>usingnamespacestd;voidshow(constchar*str,intn=0);constintSize=50;intmain(){chars[Size]="te......
  • [排序算法] 计数排序 (C++)
    计数排序解释计数排序思想计数排序的思想十分简单,就是统计每个数字出现的次数。它是一种非基于比较的排序算法,其是通过额外的空间换取时间的方式,来实现更加高效的排序。......
  • [C++学习笔记-IO控制_1]:IO类
    目录C++IO类C++IO类C++IO跟Linux一样,也是使用缓冲区来提高输入输出的效率,所以在使用的时候也要注意缓冲区这一点。如上图所示,C++中跟输入输出相关的类如下:io......
  • Effective C++ - 条款28 - 不要返回指向对象内部成分的handle
    这一条还是比较简单的,就是说不要返回指向对象内部成分的引用、指针等,即便这个引用可能声明为const(或指针指向了const对象),对内部成分做了保护,但仍有可能造成handle空悬(称为......
  • Visual C++ 6.0 Cl.exe命令启动失败解决方案
    如果想编译32位的WinC程序,选择VisualC++6.0是个不错的选择,相对VisualStudio更轻量化。一般我喜欢用命令行来生成程序,这样有时候需要批量化操作的时候更方便。安装了V......
  • C++ 读取文件及保留小数方法
    C++读取文件及保留小数方法做图论作业时,需要从文件中读取整型数据。之前都是在标准输入输出流中读取和输出。今小记一下。读取文件使用文件流ifstream最简洁的方法是......
  • [排序算法] 快速排序 (C++) (含三种写法)
    快速排序解释快速排序QuickSort与归并排序一样,也是典型的分治法的应用。(如果有对归并排序还不了解的童鞋,可以看看这里哟~归并排序)❤❤❤快速排序的分治模式1、......
  • C++ 继承和派生的简单应用
    Father.h:#pragmaonce#include<iostream>#include<string>usingnamespacestd;classFather{public:Father();Father(conststring&name,intage);......
  • 利用xmake在c++项目中编译与调用webassmebly
    最近在尝试用webassembly替代lua作为c++程序的脚本。刚好xmake也支持了webassembly的编译。下面是踩坑记录。项目需要两个target:一个c++项目、一个webassembly项目。需要......