很多情况下,会在构造函数里对成员变量进行初始化,但是当成员变量为 const 类型时就没法这么使用,因为 const 成员变量要求必须在构造函数调用之前被初始化。道理是,既然变量为 const 类型,那么此后它就不会再改变,而在构造函数之前被初始化,那么在构造函数里就能使用它们了。
在 C++ 中定义了一种成员初始化语法,可以在创建对象时位类的成员指定初始值,该语法的通用形式为:
[C++] 纯文本查看 复制代码 constructor(arg-list) : member(initializer),
member2(initializer),
//...
memberN(initializer)
{
// 构造函数体
}
上面在构造函数的后面指定了想要初始化的成员,同时用冒号将构造函数的名字和参数列表分开。
示例代码:
[C++] 纯文本查看 复制代码 #include "stdafx.h"
#include <iostream>
using namespace std;
class myclass {
const int myvar;
const int yourvar;
public:
myclass(int x, int y) : myvar(x), yourvar(y) { }
int getmyvar() { return myvar; }
int getyourvar() { return yourvar; }
};
int _tmain(int argc, _TCHAR* argv[])
{
myclass ob1(10, 33), ob2(4, 19);
cout << "Value in ob1 are " << ob1.getmyvar() << " and " << ob1.getyourvar() << endl;
cout << "Value in ob2 are " << ob2.getmyvar() << " and " << ob2.getyourvar() << endl;
return 0;
}
运行输出:Value in ob1 are 10 and 33
Value in ob2 are 4 and 19 |