您的位置:首页 > 编程语言 > C语言/C++

深度探索C++ 对象模型第91页的疑问

2013-06-11 19:53 369 查看
在《深度探索C++对象模型》这本书的第91页中,有这样一个代码,

#include <iostream>
using namespace std;

typedef int length;

class Point3D
{
public:
void mumble( length val ) { _val = val; }
length mumble() { return _val; }
private:
typedef float lengh;
length _val;
};

int main()
{
Point3D tmp3D;
tmp3D.mumble( 1.0 );
cout<<tmp3D.mumble()<<endl;

}


以上的代码被书中认为是错误的,因为length有冲突,《C++ primer》中也说这种写法是错误的,编译是通过不了的。但是我在vs2008中是可以编译通过的,发现类里面的 typedef float length 会被屏蔽,不管typedef float length 是在private或者public中,都是被屏蔽的,全局只有int length 起作用!这是咋回事?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: