“声明”和“定义”的区别
首先理解:“声明”和“定义”的区别
在我以往的课本中,没有明确说明声明和定义的作用。
在《C++Primer》中
声明:向编译器“介绍”变量(标识符),告诉编译器该变量的类型与名字。
定义:向变量分配存储空间,也可进行初始化。在程序中,变量有且只有一个定义
声明包括:
- 定义(因在定义时就已经声明了变量的类型与名字)
- extern关键字,以标示变量或者函数的定义在别的文件中
- 函数的声明和定义区别比较简单,带有{ }的就是定义,否则就是声明。
对引用是否占用内存的探讨
引用在C++里的作用是:变量的别名(对引用只有声明没有定义)
有些人认为:引用不占据内存空间,或者说和原始变量共享同一内存
也有一些人认为:引用占用内存空间,因为编译器会将其解析为一个* const p
,在内存中为引用开辟了一个指针型的内存单元(我比较赞同这一点)。
不过,我觉得这位CSDN大佬说的也有一定道理。
1 |
|
PS: sizeof在编译期得到对象的大小。
string类关于sizeof(string)在VS2017上是28,并不是字符串的长度。
参考文章
https://blog.csdn.net/sjxbf/article/details/6310150
http://www.karottc.com/blog/2015/07/29/cpp-reference/