细微的用法

来源:互联网 发布:四旋翼控制算法stm32 编辑:程序博客网 时间:2024/06/05 08:14

1、const

void foo(const int &x)

void foo(const int& x)

void foo(int const &x)

void foo(int const& x)

对于"常整数"而言,以上用法都可以,但是我们倾向于使用int const 原因1: 针对问题"什么是恒定不变的",const修饰的是const关键字前面的部分,比如int * const i,这里指针是常量,而指针指向的内容确是可以变化的。 原因2: 使用模板时很常用的语法替换规则。如下所示: typedef char* CHARS;

typedef CHARS const CPTR;//指向char类型的常量指针

当CHARS被char*替换后:typedef char* const CPTR意义不变,但是考虑如下替换代码

typedef char* CHARS; typedef const CHARS CPTR;//指向char类型的常量指针

如果我们替换掉CHARS之后,第2个声明却导致不同含义: typedef const char* CPTR;//指向常量char类型的指针

同样的现象(规则)也适用于volatile限定符。

2、对于间隔符,决定在&符号和参数名称之间留出一个空格:void foo(int const& x);即参数类型和参数名称是分离的。

3、char* a,b;a是一个字符指针,而b则是一个字符常量,不要在同一语句中声明多个实体。

4、使用<stddef.h>而不是使用<cstddef>从而无需给size_t和ptrdiff_t添加std::名字空间限定,另外stddef.h具有更好的可移植性。

原创粉丝点击