将对象(而不是指针)向下转换为其已知的派生类型是否安全?
是否存在切片的危险? result Compare(const Osp::Base::Object &obj1, const Osp::Base::Object &obj2, int &cmp) const { cmp = ((const Block)obj1…
将派生类对象存储在基类变量中
我想在向量中存储几个类的实例。由于所有类都继承自同一个基类,这应该是可能的。 想象一下这个程序: #include #include using namespace std; class…
为什么 `e.what()` 打印“错误分配”?
在我的计算机中,try 块中的 new 表达式引发了 bad_alloc 异常。 请注意,catch 子句通过值而非引用接收异常对象。为什么e.what()打印“bad Allocatio…
C++继承-子类构造函数调用?
我的主要内容如下: Sum *sum = new Sum(Identifier("aNum1"), Identifier("aNum2")); 我的类是: class Table { private: static map m; public: sta…
重写虚函数返回类型不同并且不是协变的
啊,SO回来得正是时候。 我收到一个奇怪的错误: 'B::blah': overriding virtual function return type differs and is not covariant from 'A::blah'…
由于类切片而导致未处理的异常
我在下面的注释行上收到未处理的异常读取位置 0x00000008(读取 NULL 值),包括导致错误的相关方法(继续下面的示例): 事件方法: Event::Event(Ev…
设置派生对象的基础对象?
这是一道基本概念题。如果我有一个继承自 Base 的 Derived 类,并且实例化了一个新的 Derived 对象,我可以将其 Base 对象设置为我选择的特定 Base 对…
返回对切片对象(超类型)的引用
考虑以下类: class Coord { public: double _x, _y; Coord(double x, double y) { _x = x; _y = y; } }; class NamedPoint : public Coord { public:…
C++ 中的智能指针
假设我们有一个基类和一个派生类。所以: class base { protected: ~base(){ //... } // ... }; class derived : public base { // ... }; 现在假设我…
c++ 中的对象切片
class Base { int iBase; public: virtual void display() { cout<<"I am a Base Class"<
对基向量的元素调用派生方法(给出的示例)
假设我有以下类结构。我希望能够确定 Animal 向量中的元素是什么类类型,以便我可以对其执行特定于子类的方法。下面的例子应该演示: #include #inclu…
为什么这个方法调用不像我预期的那样是虚拟的?
我想问一下,当我使用没有指针的虚函数时会发生什么?例如: #include using namespace std; class Parent { public: Parent(int i) { } virtual void…
错误的原因是对象切片吗?
g++ -std=gnu++0x main.cpp In file included from main.cpp:6:0: CustArray.h: In constructor 'CustArray::CustArray()': CustArray.h:26:32: error…
std::move 会导致切片吗?
例如, unique_ptr = new deriv; std::vector>.push_back(std::move(deriv)); deriv 是否会被切片为类型 unique_ptr?…