const和static const的区别:
一、全局的区别
const规定变量在全局中是只读的变量,并且它的值无法被修改。
static const规定变量在当前的模块中是只读的变量,无法再全局中被其他模块读取。
二、文件的区别
const定义的指针,不赋初值编译时不报错,在初始化时应说明指针的指向。
static const不能在定义对象时对变量初始化,就是不能用构造函数来初始化。
三、函数的区别
const只能通过构造函数初始化列表进行,并且必须有构造函数。
static const是静态的,属于类的静态成员函数。
四、类的区别
const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同,所以不能在类声明中初始化const数据成员。
static const初始化在类体外进行,初始化时不加该成员的访问权限控制符private,public等,并且初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。