const,enum,inline和#defjne
来源:互联网 发布:知乎气功 编辑:程序博客网 时间:2024/06/05 22:47
1.c++包含c,也支持面向过程;
2.c++支持面向对象形式,有类,封装,继承,多态和虚函数等;
3.泛型编程,强大的模板编程;、
4.STL标准模板库。
条款2:
1.编译器代替预处理器;使用const,enum,inline代替#define。
const:
int const *p;表示(*p)不能被改变,也就是p指向的内容不能被改变,p可以改变。
int* const p;表示p不能被改变,但是p指向的内容可以改变。
const int* const p;表示p和(*p)都不能被改变。
const int *p; 和int const *p是一个意思,写法不同而已。
const_cast可以撤销const的常量特性。
在定义类专属常量时:
类专属常量最多只有一份实体,所以要使用static。
1):
在类的内部:static const int a = 5; //此为声明式;
在类的外部:const int ClassB::a; //此为定义式;
或者:
2):
在类的内部:static const int a; //此为声明式;
在类的外部:const int ClassB::a = 5; //此为定义式;
部分编译器可以用1),部分编译器可以用2),也有编译器1)
、2)都不支持(此时就用enum定义类专属常量)。但在类内部
的必为声明式,外部为定义式。
enum:
刚才的类专属常量可以如是定义:
在类的内部:
enum { a = 5 };
const定义的常量可以取地址,而#define和enum都不能取他们
定义常量的地址。
inline:
类似于函数一样的宏使用inline更好,inline能使用模板就使
用模板,如:
#define CALL_WITH_MAX(a,b) f((a) > (b) ? (a) : (b))//(很糟糕,极容易出错)
改后:
template<typename T>
inline woid callWithMax(const T& a,const T& b)
{
f(a > b ? a : b);
}
//这个就很好了。
2.#define只是字符替换,无安全检查,所有实参要加小括号(不然替换后容易出错);
宏不重视作用域,在#undef前都有效。
阅读全文
0 0
- const,enum,inline和#defjne
- const,enum,inline替换#define
- static const inline #define enum
- 尽量以const、enum、inline替换#define
- 尽量以const,enum,inline替换#define
- 用const、enum、inline替代#define
- 【C++】#define vs const 、enum & inline
- 用const、enum、inline替代#define
- 尽量以const enum inline 代替 #define
- 尽量以const,enum,inline替换#define
- 尽量以const、enum、inline替换#define
- 尽量以const,enum,inline替换#define
- 尽量使用const、enum、inline代替#define
- 使用const,enum,inline template<>替代#define
- Effective C++读书笔记--Item 2:使用const,enum和template inline函数代替宏
- 《Effective C++》阅读笔记三:聊聊#define与const,enum和inline
- C++基础:#define宏定义和inline,const,enum的区别
- 条款02:尽量以const,enum,inline替换#define(Prefer const,enum,inline to #define)
- 【开班啦】机器学习精英40天成长计划
- Java单例模式和关键字
- JavaScript DOM编程艺术第十章
- ROS学习记录(2)--控制Kobuki
- 实现多级下拉框联动获取数据
- const,enum,inline和#defjne
- 今天找到了第一份android工作,说说自己的心情,希望一个月之后我能坚持下来 真正的入行
- CentOS 7 下挂载NTFS文件系统
- #、##和__VA_ARGS__
- 快速排序 算法 原理与代码
- python os popen 获取system运行结果
- HARDFP ABI理解
- linux并发控制之顺序锁
- 【FRDM-KW41Z学习笔记】使用恩智浦测试工具评估FRDM-KW41Z开发板