"声明"的严谨C++语意,是用以告诉编译器类型及其细节,例如:
class MyClass
{
//数据成员细节...
//成员函数细节...
};
上述声明仅告诉编译器有自定义类型MyClass,编译器仅对其进行语汇分析及名字的决议,并未占用内存!
"定义"的严谨C++语意,即分配内存,编译器将在相对内存地址上为其对象定址!
要注意的是,我们不能简单的说
string myString;
是声明还是定义,判断的原则是看是否占用内存。例如:
class MyClass //类的声明,无内存占有
{
string myString; //string的声明
};
但是
#include<iostream>
//全局作用域
string myString;//定义,myString是实例化的string!
int main()
{
//Main函数体内
string myAnotherString;//定义,myAnotherString是实例化的string!
return 0;
}
变量和对象不加extern永远是定义,类中的除外。
函数只有函数头是声明,有函数体的是定义。
自定义的类永远只是声明。类只有在实例化的时候才会分配内存空间
(类这里不知道到底对不对,关于类占有内存空间详细见 http://blog.csdn.net/yimingsilence/article/details/53447436 )