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; }