曲径通幽论坛

标题: 成员初始化语法 [打印本页]

作者: beyes    时间: 2011-12-12 14:44
标题: 成员初始化语法
很多情况下,会在构造函数里对成员变量进行初始化,但是当成员变量为 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





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2