类c ++之间的转换构造函数

时间:2015-05-08 11:24:06

标签: c++ class

背景:我正在阅读一本精彩的书,他们简要地提到了转换构造函数。

虽然我理解转换构造函数的基本原理,但我有点迷失,在实践问题部分他们问:

编写转换约束器,将ratnum转换为realnum,从我在问题发生之前收到的代码中转换为class ratnum { int num, denom; public: ratnum(int numenator = 2, int denominator = 3) : num(numenator), denom(denominator) {} void show() { cout << static_cast<double>(num) / denom << endl; } double result() { return num / denom; } }; class realnum { int number; public: realnum(double numr = 0) : number (numr) {} };

ratnum one = 10; //or
ratnum two = {10, 2}

我总是这样处理转换构造函数:

result

但从未见过我们可以从类转换为类类型。 请问,请问这样的转换构造函数应该如何工作(可能还有示例)?

定义ratnum类的函数realnum check = one.result(); 并编写:

{{1}}

是什么意思?

2 个答案:

答案 0 :(得分:2)

  

但从未见过我们可以从类转换为类类型。可以   请你说,这样的转换构造函数应该如何工作(也许吧   用例子?

与从非类型转换完全相同。根本没有任何区别。

答案 1 :(得分:1)

我认为他们的意思是构造函数的重载需要另一个类的输入,例如

realnum(ratnum const& other) : number{other.result()} {}

反之亦然,从ratnum构建realnum,虽然这可能不那么微不足道,因为有无理数,无限重复数等等。

您可以使用此版本的构造函数来执行类似

的操作
ratnum a{2, 4};
realnum b{a};    // This used your "conversion" constructor