将基对象返回到向上转换的派生类的最合适方法是什么
What is the most suitable way to return base object to up-casted derived class?
struct B {}; // B contains data members
struct D : B {}; // D doesn't contain ANY data member
B g_b; // global object
D& fun () // want to return by reference ONLY
{
return <???>(g_b); // how ???
}
[注意:我想避免重载构造函数(或赋值),例如D(const B&)
。
你想做的事情是非法的。 g_b
不是D
.
没有合适的演员阵容。这实际上是未定义的行为。
有关详细信息,请参阅本主题:向下转换基类型
注意:当您将 base 强制转换为派生类时,该术语是向下转换的;当您将派生类转换为基类时,将使用术语 upcast。
这是
未定义的行为。
可以使用 dynamic_cast
对派生类指针/引用执行基类指针/引用的安全向下转换。它在指针的情况下返回 null,或者在引用的情况下引发异常。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 派生类销毁的最佳实践是什么
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 静态自动 constexpr t = { "red" , "black" , "green" } 是什么类型;派生到?
- 调用不属于基类的派生类函数的最佳方法是什么?
- 抽象类的需求是什么?为什么要通过其基类访问派生类方法?在C++
- 如果私有虚拟函数被覆盖为派生类中的公共函数,那么问题是什么
- 派生类对象是否包含基类的私有成员?它在记忆中是什么样子的
- 根据用户输入创建相应的派生类的最佳实践是什么?
- 从派生类实现基类构造函数专用化的替代方法是什么
- 类派生1是什么:基{};意味 着
- 拥有所有派生自同一基类的类实例集合的最佳方法是什么?
- 如何派生模板函数?或者这个场景的首选方法是什么
- 父类有虚方法而派生类没有虚方法的后果是什么?
- 在派生类中处理派生对象集合的最佳方法是什么?
- 将基类构造函数强制转换为派生类构造函数是什么意思?
- 转换运算符"still valid"派生类是什么意思
- 将基对象返回到向上转换的派生类的最合适方法是什么
- 在c++中跟踪父类有多少个派生类的最好方法是什么?