C++ 调用派生类';s函数,该函数不是';t是基类的一部分吗?

C++ 调用派生类';s函数,该函数不是';t是基类的一部分吗?,c++,C++,给出以下代码: (这主要是关于Function()方法中发生的事情,其余只是设置/上下文。) 我和DerivedA在这里合作的方式是最好/最有效的方式吗?我觉得有更好的方法可以做到这一点,但我不知道怎么做。答案是你不这样做,它完全由多态性处理,请阅读以下代码: 并尝试将其映射到您的代码: Shap是你的基础 矩形是您的衍生视频 三角形是你的衍生B #包括 使用名称空间std; 阶级形态{ 受保护的: int宽度、高度; 公众: 形状(inta=0,intb=0){ 宽度=a; 高度=b; }

给出以下代码:
(这主要是关于Function()方法中发生的事情,其余只是设置/上下文。)


我和DerivedA在这里合作的方式是最好/最有效的方式吗?我觉得有更好的方法可以做到这一点,但我不知道怎么做。

答案是你不这样做,它完全由多态性处理,请阅读以下代码:

并尝试将其映射到您的代码:

  • Shap是你的基础
  • 矩形是您的衍生视频
  • 三角形是你的衍生B
#包括
使用名称空间std;
阶级形态{
受保护的:
int宽度、高度;
公众:
形状(inta=0,intb=0){
宽度=a;
高度=b;
}
内部区域(){

答案是你不这样做,它完全由多态性处理,请阅读以下代码:

并尝试将其映射到您的代码:

  • Shap是你的基础
  • 矩形是您的衍生视频
  • 三角形是你的衍生B
#包括
使用名称空间std;
阶级形态{
受保护的:
int宽度、高度;
公众:
形状(inta=0,intb=0){
宽度=a;
高度=b;
}
内部区域(){

cout这足够满足您的需要:

DerivedA& temp = static_cast<DerivedA&>(base);
temp.FunctionA();
DerivedA&temp=静态铸件(基础);
温度函数();

在引擎盖下,这与您刚才所做的C风格造型相同,但将其明确化是一种良好的做法。

这已经足够满足您的需要:

DerivedA& temp = static_cast<DerivedA&>(base);
temp.FunctionA();
DerivedA&temp=静态铸件(基础);
温度函数();

在引擎盖下,这与您刚才所做的C风格演员阵容相同,但让他们明白这被认为是一个很好的做法。

我在这里用DerivedA做这件事的方式是最好/最有效的方式吗?不,不是。您了解了
虚拟
成员函数吗?方便阅读:我在这里用Deri做这件事的方式是吗吠陀:最好/最有效的方法是什么?不,不是。你已经了解了
虚拟
成员函数了吗?方便阅读:但在这种情况下,你假设你试图调用的函数在三角形和矩形中都有相同的用途。在area()的情况下也是如此,这是正确的。但是如果你想根据形状做不同的事情,而不是在所有形状之间共享,那该怎么办呢?首先,你需要证明为什么你认为你想这么做。函数()是什么
在实际代码中实际是这样的,等等?但是在这种情况下,您假设您试图调用的函数在三角形和矩形中都有相同的用途。在area()的情况下,这是正确的。但是如果你想根据形状做不同的事情,而不是在所有形状之间共享,那该怎么办呢?首先,你需要证明为什么你想这么做。你实际代码中的
函数()
实际上做了什么,等等。?