#include <iostream> using namespace std; class BClass { public : //此处i为一般的常量,ci为常量变量,ri为引用成员变量,仅i可以再构造函数内初始化 BClass() : i(1), ci(2), ri(i) // 对于常量型成员变量和引用型成员变量,必须通过 { // 参数化列表的方式进行初始化。在构造函数体内进 } // 行赋值的方式,是行不通的。 void print_values() { cout << "i =/t" << i << endl; cout << "ci =/t" << ci << endl; cout << "ri =/t" << ri << endl; cout << "si =/t" << si << endl; cout << "csi =/t" << csi << endl; cout << "csi2 =/t" << csi2 << endl; cout << "csd =/t" << csd << endl; } private : int i; // 普通成员变量 const int ci; // 常量成员变量 int &ri; // 引用成员变量 static int si; // 静态成员变量 //static int si2 = 100; // error: 只有静态常量成员变量,才可以这样初始化 static const int csi; // 静态常量成员变量 static const int csi2 = 100; // 静态常量成员变量的初始化(Integral type) (1) static const double csd; // 静态常量成员变量(non-Integral type) //static const double csd2 = 99.9; // error: 只有静态常量整型数据成员才可以在类中初始化 }; // 静态成员变量的初始化(Integral type) int BClass::si = 0; //不能写成int static BClass::si=0;即不能出现static // 静态常量成员变量的初始化(Integral type) const int BClass::csi = 1; //此处也一样,要么在定义时初始化,要么在此处初始化,但不能加static // 静态常量成员变量的初始化(non-Integral type) const double BClass::csd = 99.9; //同上 int main( void ) { BClass b_class; b_class.print_values(); getchar (); return 0; } |