在c++ 中,函数定义和变量定义都遵从“一次定义规则”:就是定义只能有一份,但是可以有多个声明;而inline函数和const常量则是此规则的例外:inline函数可以在每个文件中都有一份相同的实现(一般被置于头文中),而const常量则是作用域被限制在它所在的文件中,一出文件就不可见.
例:
//
.h文件
const int seq_cnt = 6 ;
const vector < int >* (seq_array[seq_cnt])( int );
const int seq_cnt = 6 ;
const vector < int >* (seq_array[seq_cnt])( int );
这并不十分正确,因为它会被解读为seq_array的定义而非声明,如果在seq_array定义式前加上关键词extern,它便成为了一个声明:
extern
const
vector
<
int
>*
(seq_array[seq_cnt])(
int
);
前面我们不是说道 const常量则是作用域被限制在它所在的文件中,一出文件就不可见 么,即const常量不是可以放在.h文件中么? 你要清楚, seq_array是一个指向const object的指针,并非const object本身,而seq_cnt才是const object.