1. auto 类型的成员变量可以使用默认构造函数初始化
2. const 类型成员变量:如果显示的写出了构造函数,则必须在构造函数中初始化,如果没有写构造函数,则可以正常编译
3.static 根据C++ Primer中所叙述,static成员必须在类外进行初始化,而不能在构造函数内进行初始化
static 成员函数没有this形参,它可以直接访问所属类的static成员,但不能直接使用非static成员。
4. static const 类型成员变量可以在声明时初始化;注:这是特例,其他情况都不能在类的声明中初始化,必须在构造函数中初始化。
#include <iostream>
using namespace std;
class T{
int i; //不需要在构造函数中初始化
const int ci;
static int si; //static 变量必须在类外进行初始化
static const int sci;
static const int sci1=2;
T():ci(1){}; //若改为 T(){}; 报编译错误,const int si 未初始化
// T():ci(1),sci(1),si(1){};//错误,static 变量必须在类外进行初始化
public:
//static double rate(){return i;} //错误,不能直接使用非static成员
static double rate(){return sci;}
static double rate1(){return sci1;}
//类外定义
static double rate2(double);
};
int T::si = 1;
const int T::sci = 1;
double T::rate2(double x){si = x;}
int main()
{
return 0;
}
本文详细解析了C++中auto类型、const类型、static类型及staticconst类型成员变量的初始化规则,包括默认构造函数的使用、构造函数的书写要求以及static成员变量的初始化位置。同时展示了实例代码,帮助理解各个类型的初始化过程。
3万+

被折叠的 条评论
为什么被折叠?



