-
1 votesanswersviews
派生类中引入的公共接口
两个类 D1 和 D2 派生自抽象基类 B . 它们中的每一个都共享 B 中声明的公共公共接口,但它们中的每一个都可能有自己的特定公共接口(例如 D2 具有 D2.Bar() ,仅对 D2 对象有意义): public abstract class B { public int N { get; set; } public abstract void Foo(); } publ... -
0 votesanswersviews
在java中,重复的向下转换和向上转换会删除子类中的数据吗?
我意识到向上转换将子类转换为超类,而向下转换则以相反的方式转换 . 但是,假设子类和超类有不同数量的数据类型,从子类 - >超类 - >子类的转换是否会成为数据擦除的一部分,因为子类中的某些数据部分不包含在超类中? 因为我知道当浮点型数据在c中转换为int时浮点被擦除,我想知道它是否对java中的类的工作方式相同 . -
0 votesanswersviews
c在减法期间转换为字节(unit8_t)不会像我期望的那样强制下溢;输出是int16_t;为什么?
请注意, byte 是8位类型(uint8_t),unsigned int是16位类型(uint16_t) . 以下内容不会产生我期望的结果 . 我希望它下溢并且结果始终是uint8_t,但它变成了一个signed int(int16_t)而不是!!!为什么? 特别关注以下代码行: (byte)seconds - tStart 我希望它的输出总是一个无符号的8位值(uint8_t),但它输出一个带... -
71 votesanswersviews
沮丧和向上倾斜
我是C#(和OOP)的新手 . 当我有一些如下代码: class Employee { // some code } class Manager : Employee { //some code } Question 1 :如果我有其他代码执行此操作: Manager mgr = new Manager(); Employee emp = (Employee)mgr; ... -
3 votesanswersviews
haskell 'downcast'如何进行类型界面?
在oop中,例如java,当类型实际上是子类时,我们只能将 super 类转发为 subclass . 但是在haskell中,我们可以简单地将'downcast'类型类放入该类型类的任何实例中 . 如 fromInteger ,返回 Num . 从我的角度来看,它实际上是一个 Int 所以它不能'downcasted'到 Float 但它可以 . Prelude System.Random&... -
4 votesanswersviews
在java中的上传和下传混乱
好的 . 因此,如果... int x=3; int y=5; x=y; 那会 x=5 ,对吧? 好的,所以如果 B 是 A 的子类...... A a=new A(); B b=new B(); a=b; ^^^为什么这被认为是向上倾斜? 是不是“a”应该成为“b”而不是相反?有人可以向我解释这一切吗? -
3 votesanswersviews
是否有任何C工具可以检测到static_cast,dynamic_cast和reinterpret_cast的误用?
以下问题的答案描述了C中 static_cast , dynamic_cast 和 reinterpret_cast 的推荐用法: When should static_cast, dynamic_cast, const_cast and reinterpret_cast be used? 你知道有哪些工具可以用来检测这类演员的滥用吗?像PC-Lint或Coverity Static Analys... -
4 votesanswersviews
自动向下转换指向派生对象的指针
早上好, 我有一个模板化的类,我想通过指针向量操纵对象 . 要使用指向templatized类的指针向量,我需要从非模板化的类派生这个类,并且我做到了 . 这是我的问题:从指向基类的指针调用派生类的方法,我不能使用虚函数,因为模板函数不能虚拟化 . 我需要进行一个显式的强制转换,这很乏味:一旦创建了一个带有new的数字对象,实际上,需要对数字*进行向下转换,尽管事先知道该对象是数字 . 我以一种尴... -
7 votesanswersviews
从基指针向模板化派生类型的向下转换
我有以下层次结构: class base { public: virtual ~base(){} virtual void foo() {} }; template <typename T> class derived1 : public base { virtual void foo() {}; }; template <typename T> cl... -
3 votesanswersviews
动态转换为非派生对象以调用函数有效吗?
我在C书中读到,如果它指向的对象实际上是派生类型的对象,则可以使用dynamic_cast将指向基础对象的指针向下转换为派生对象指针 . 格式为 dynamic_cast<Derived*>(basePointer) . 此外,我在这个网站上读到,如果指向的对象无法转换为派生类类型,则dynamic_cast应返回空指针 . 但是,我最近尝试使用指向普通对象的指针,将虚函数向下转换为... -
5 votesanswersviews
如何从非多态虚拟基类转发?
当没有涉及虚函数时,有没有办法从虚拟基类转发到派生类?这里有一些代码来演示我在说什么: struct Base1 { int data; }; struct Base2 { char odd_size[9]; }; struct ViBase { double value; }; struct MostDerived : Base1, Base2, virtual ViBase...