+ -
当前位置:首页 → 问答吧 → 有关C++对象中的数据绑定问题。书籍来源《深度探索c++对象模型》

有关C++对象中的数据绑定问题。书籍来源《深度探索c++对象模型》

时间:2011-12-07

来源:互联网

再看到3.1节有关Data Member的绑定这一节的时候,书上总结的结果有点不是很明白。我按照书上的例子做了个实验,输出的结果却让我很是confused,大家帮我理解下。
程序代码如下:
#include<iostream>
#include<typeinfo.h>
using namespace std;

typedef double length;

class Point3D
{
public:
void number(length val){_val=val;}
length number(){return _val;}
private:
typedef int length;
length _val;
};

int main()
{
Point3D point;
point.number(33.3);
cout<<typeid(point.number()).name()<<" "<<point.number()<<endl;
return 0;

}

//输出结果却是
double 33
我就纳闷了,如果length绑定的类型是全局定义的double,既然是double,那输出就应该是33.3. 如果length绑定的类型是类内的int,那么typeid操作符计算的类型就应该是int。
大家可以对全局和类内的类型做下交换等实验,然后探讨下分析的结果。谢谢~~

作者: ynnej_ivy   发布时间: 2011-12-07

在你的类命名空间中用的是typedef int length;
你的main函数是全局空间用的是typedef double length;

类型定义存在的范围不同,没有什么的

作者: sky101010ws   发布时间: 2011-12-07