曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 3350|回复: 0
打印 上一主题 下一主题

成员初始化语法

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-12-12 14:44:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
很多情况下,会在构造函数里对成员变量进行初始化,但是当成员变量为 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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 18:33 , Processed in 0.075908 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表