类域中的名字必须在使用中必须被声明,这点很好理解的
但是有两种情况除外的:
为什么会这样呢,这个和名字解析机制有关系了
inline函数定义里面
class String {
public:
typedef int index_type;
char& operator[] ( index_type elem )
{
return _string[ elem ]; //看到没有,_string是在下面生成的
}
private:
char * _string;
};
这个让我想起了,以前在csdn上面的提问。 哈哈 原来是这个样子啊
该名字解析发生在类的完整域中就好像成员函数体是
在类体结束前被最后处理一样在这个点上类的所有成员都已经被声明了
被用做缺省实参的名字
class Screen {
public:
// bkground 指向在类定义中后来声明的静态成员
Screen& clear( char = bkground );//看到没有
private:
static const char bkground = '#';
};
不过缺省实参 必须是 静态的
没有评论:
发表评论