int x=0;
class Foo
{
public:
Foo(){x=0;}
void X(int val){x=val;}
int X(){return x;}
private:
int x;
};
int main()
{
Foo b;
b.X(3);
cout<<x<<endl;
cout<<b.X();
}
上述代码输出结果为0 3。这说明设置和返回的是类的数据成员而不是全局变量。这是因为函数体内的分析直到整个class声明都出现了才开始。
再看下面的代码
typedef int length;
class Foo
{
public:
void X(length val){x=val;}
length X(){return x;}
private:
typedef float length;
length x;
};
int main()
{
Foo b;
b.X(3.4);
cout<<b.X();
}
输出结果为3。这是因为对于成员函数的参数列表而言,上述规则不存在。因此建议将内嵌别名放在类的起始处。