如果我这样做
double d = 34.56;
int i = (int)d;
我不是“沮丧”吗?
OR
这个术语只用于类和对象吗?
我感到困惑,因为在这种情况下,我们会从较大的double
向较小的int
“向下转发”,但是在课堂上,我们会从较小的base class
“向下”更大的derived class
。
在某种意义上,这两个惯例是否相反?
答案 0 :(得分:7)
答案 1 :(得分:3)
不,你没有失败。你只是在施法,而你正在砍掉小数后的任何东西。
向下施放不适用于此处。原语int
和double
不是C ++中的对象,并且在类层次结构中的两个对象的方式上彼此不相关。它们是独立的原始实体。
向下转换是指将一个对象转换为从其派生的另一个对象的行为。它指的是从类层次结构的根向下移动的行为。它与相关类型的大小无关。
答案 2 :(得分:0)
int
和double
都是基元而不是类,因此类的概念不适用于它们。
是的,它是从“较大”类型到“较小”类型的转换(就数字大小而言),但它只是一个“演员”而不是“向下倾斜”
答案 3 :(得分:0)
这两者并非如此简单无关。在示例的情况下,我们采用一种类型的值,并且强制转换采用该类型并生成类似的值,该类型的值非常相似,但完全不相关。
在使用类似dynamic_cast
的东西遍历继承树的情况下,我们将一个指针(或引用)带到一个对象,并且之前决定将其视为指向其他类型对象的指针,我们基本上(试图)将它视为(更接近)原始类型的对象。但是,特别是,我们不创建一个新的或不同的值 - 我们只是创建一个相同值的不同视图(即,相同的实际对象)。
答案 4 :(得分:-1)
你不是在施展 - 你正在转变。完全不同的东西。