当我用C++做声明时,
static const int SECS = 60 * MINUTE;
const static int SECS = 60 * MINUTE;
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别吗?
这两者有什么区别吗?
一点都不.订单无关紧要(在这种情况下!).
而且,如果你写这个:
const int SECS = 60 * MINUTE; //at namespace level
Run Code Online (Sandbox Code Playgroud)
在命名空间级别,那么它等同于:
static const int SECS = 60 * MINUTE;
Run Code Online (Sandbox Code Playgroud)
因为在命名空间级别, const
变量默认具有内部链接.因此,除非增加可读性,否则static
关键字不会执行任何操作const
.
现在,如果您希望变量具有外部链接, const
同时又要使用extern
:
//.h file
extern const int SECS; //declaration
//.cpp file
extern const int SECS = 60 * MINUTE; //definition
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
const
始终适用于其左边的类型; 如果没有,则适用于右侧的下一个类型.
所以以下三个声明
const static int SECS = 60 * MINUTE;
// or
static const int SECS = 60 * MINUTE;
// or
static int const SECS = 60 * MINUTE;
Run Code Online (Sandbox Code Playgroud)
都是平等的.static
适用于整个声明; 和const适用于该int
类型.
const
如果你有一个"更复杂"的类型,例如引用或指针,那么位置只会产生影响:
int a;
const int * b = a; // 1.
int * const c = a; // 2.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它的位置之间存在差异const
- 对于1.它适用于int(即它是指向const int的指针,即您不能更改该值),而对于2.,它适用于指针(即你无法修改c指向的位置).
归档时间: |
|
查看次数: |
1898 次 |
最近记录: |