一个小问题放倒一大批C++专家!
首先把“陈伟柱”这个2B翻译永远地钉在历史的耻辱柱上!然后再把“孟岩”这个职业书托痛打50大板!最后再说我的问题:
首先请同学诸君找到《C++代码设计与重用》这本书(电子书网上有),请翻到第31页。
首先书中给出了一个有理数类:
class Rational
{
public:
Rational(int a, int b)
: num(a), denom(b)
{}
void reduce() const
{
int gcd = 2;
Rational* let_me_modify = (Rational*)this;
let_me_modify->num /= gcd;
let_me_modify->denom /= gcd;
}
private:
int num;
int denom;
};
接着书中有这样一段话(翻译中的错别字原文照录):
“
试图使用旧式的cast转型对const对应的X对象进行转型,只有当被转型的类X具有不少于一个的显示构造函数时,类X的转型后的对象才会有X原来定义的行为。(大多是重要的类都能满足这个限制条件,即至少有一个显式构造函数)
译注:如上例,是指只有当Rational具有公共构造函数时,转型后的对象Let_me_modify才能调用它的成员变量num和denom。”
这段话本人看不懂,请教了好几位月薪3万以上的C++高手都没有看懂是什么意思。网上遍寻英文原文而不得,所以无法把问题放到StackOverflow去。只有放到CSDN看看是否有看得懂的C++高人。
谢谢!
首先请同学诸君找到《C++代码设计与重用》这本书(电子书网上有),请翻到第31页。
首先书中给出了一个有理数类:
class Rational
{
public:
Rational(int a, int b)
: num(a), denom(b)
{}
void reduce() const
{
int gcd = 2;
Rational* let_me_modify = (Rational*)this;
let_me_modify->num /= gcd;
let_me_modify->denom /= gcd;
}
private:
int num;
int denom;
};
接着书中有这样一段话(翻译中的错别字原文照录):
“
试图使用旧式的cast转型对const对应的X对象进行转型,只有当被转型的类X具有不少于一个的显示构造函数时,类X的转型后的对象才会有X原来定义的行为。(大多是重要的类都能满足这个限制条件,即至少有一个显式构造函数)
译注:如上例,是指只有当Rational具有公共构造函数时,转型后的对象Let_me_modify才能调用它的成员变量num和denom。”
这段话本人看不懂,请教了好几位月薪3万以上的C++高手都没有看懂是什么意思。网上遍寻英文原文而不得,所以无法把问题放到StackOverflow去。只有放到CSDN看看是否有看得懂的C++高人。
谢谢!
...全文
相关推荐
C++ .h和.cpp文件总结
"这篇文档是关于C++编程中头文件(.h)和源文件(.cpp)的使用总结,旨在帮助新手理解两者的区别和作用。文档提到了头文件通常用于声明类型、函数和宏常量,而源文件则用于实现函数和定义变量。作者探讨
华为OD机试 - 篮球游戏 - 双端队列(Python/JS/C/C++ 双机位A卷 100分)
每一题都有详细的答题思路、详细的代码注释,发现新题目,随时更新,全天CSDN在线答疑。
cpp代码-C++基础
**继承与多态**:继承允许一个类(子类)从另一个类(父类)继承属性和行为,多态则允许不同类的对象以统一的方式处理。深入学习这些概念并实践编写代码,可以帮助你掌握C++的基础知识。
动物专家系统程序(C++版)
【压缩包子文件的文件名称列表】列出了项目中的关键文件:- Ann.cpp:这是C++源代码文件,可能包含了程序的主要实现,特别是与专家系统推理相关的部分。
33个c++重要知识总结(cpp代码)
以上每个cpp文件都是一个独立的知识点,通过实际的编程示例帮助开发者巩固理论知识,提高实践能力。学习C++不仅要掌握语法,还要理解并运用各种数据结构、算法、设计模式,以及STL的高效工具。


