首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ Primier疑惑:转换函数的过度使用导致二义性,该怎么解决

2012-03-24 
C++ Primier疑惑:转换函数的过度使用导致二义性C++ Primier原文:如果有一个表示 Date 的类,我们可能会认为

C++ Primier疑惑:转换函数的过度使用导致二义性
C++ Primier原文:
如果有一个表示 Date 的类,我们可能会认为提供从 Date 到 int 的转换是个好主意,但是,这个转换函数应返回什么值?该函数可以返回公历日期,这是表示当前日期的一个顺序数,以 0 表示 1 月 1 日,但年份是否应放在日期之前或之后?即,1986 年 1 月 31 日是否应表示为 1986031 或 311986?作为一种选择,转换操作符可以返回一个表示从某个新纪元点开始计数的天数,计数器可以从 1971 年 1 月 1 是或其他起始点开始计算天数。

问题在于,无论怎样选择,Date 对象的使用将具有二义性,因为没有一个 Date 类型对象与 int 类型值之间的一对一映射。在这种情况下,不定义转换函数更好。相反,这个类应该定义一个或多个普通成员从这些不同形式中抽取信息。

我的问题:

为什么“无论怎样选择,Date 对象的使用将具有二义性”?

Date类型对象可以与int类型值一一映射啊,如题所说“转换操作符可以返回一个表示从某个新纪元点开始计数的天数”,这样可以使每个Date对应一个int型值啊(如果没有超出int取值范围的话)。

难道要考虑int型值的取值范围吗?

如果考虑int型值的取值范围及其溢出,那么 多个Date就可以对应一个相同的int型值,这种情况不叫二义性吧?

我对二义性的理解:
编译器进行函数调用时,对多个候选函数无从取舍而导致二义性。
这样理解对吗?

初学C++,希望大家不吝赐教!

[解决办法]
Date 对象的使用将具有二义性// 个人认为这里的二义性和函数调用时的二义性是不一样的。它是说data有种多转换成int的方式。所以容易有歧义···
[解决办法]

探讨
编译器进行函数调用时,对多个候选函数无从取舍而导致二义性。
这样理解对吗?

热点排行