关于操作符“ :”!
#include <iostream>
class Matter
{
public:
Matter (int id)
: _identifier(id)
{
std::cout << " Matter for " << _identifier << " created\n";
}
~Matter ()
{
std::cout << " Matter in " << _identifier << " annihilated\n";
}
private:
const int _identifier;
};
class World
{
public:
World (int id)
: _identifier (id), _matter (_identifier) // initializing embeddings
{
std::cout << "Hello from world " << _identifier << ".\n";
}
~World ()
{
std::cout << "Good bye from world " << _identifier << ".\n";
}
private:
const int _identifier;
const Matter _matter; // Embedded object of type Matter
};
World TheUniverse (1);
int main ()
{
World myWorld (2);
}
帮忙解释一下1。Matter (int id) : _identifier(id) 中的操作符“:”?
2。const int _identifier;//常量不是定义时就要被初始化的吗?
3。_identifier值是怎样被存起来的?
问题点数:20、回复次数:7Top
1 楼doway(john)回复于 2005-09-07 00:26:08 得分 5
1、成员初始化表
类的初始化有一种可替换的语法:成员初始化表(member initialization list)是由逗号
分开的成员名及其初值的列表。
2、3 与 1 是同一个问题。Top
2 楼nasi00(莫傲·逍遥)回复于 2005-09-07 05:25:34 得分 5
去找本Effective C++看看,里面有关于这个的一些讨论,写的挺好Top
3 楼mituzhishi(慎独)回复于 2005-09-07 10:28:33 得分 5
帮忙解释一下1。Matter (int id) : _identifier(id) 中的操作符“:”?
2。const int _identifier;//常量不是定义时就要被初始化的吗?
3。_identifier值是怎样被存起来的?
1.初始化列表,:表示列表的开始,括号外是类的元素,括号内是初始值.
2.Java里面是的,但C++里面的初始化都要在构造函数里面做.有一种情况例外:
const static a=0;可以在类中初始化(就是同时const 和 static)
3._identifier使用初始列表括号里的东西初始化的.Top
4 楼ferrywong(皇妹)回复于 2005-09-07 11:17:34 得分 3
成员初始化表,是构造函数定义式第二种初始化写法。例如:
Triangular::Triangular(const Triangular &rhs):_length(rhs._length),_beg_pos(rhs._beg_pos),_next(rhs._next){}
成员初始化表是紧跟在冒号后面的,以逗号隔开Top
5 楼yaoniming3500(腰子比猪大)回复于 2005-09-07 11:33:07 得分 2
成员初始化列表,一般用来初始化基类成员的。Top
6 楼hxblvc(还是好好学吧...)回复于 2005-09-07 11:57:09 得分 0
看来我不用说了
upTop
7 楼snowbirdfly(专心搞好嵌入式~~~)回复于 2005-09-07 12:06:44 得分 0
是啊~
再顶一下~~Top




