类的转换(上转换)

Casting of classes ( upcasting )

本文关键字:转换      更新时间:2023-10-16

我有一个名为"obj"的类和另一个名为"aggregate"的类。

第二个是由第一个衍生而来的

类"obj"只保存一个整数。"聚合"没有更多(只有更多的"方法")。

class obj{
public:
  int t;
}

我有一个返回"obj"的函数

obj pop();

,我需要将其结果赋值给类"aggregate"的变量。

聚合;一个= pop ();

我试着这样做:

a=static_cast<aggregate>(pop());
a=dynamic_cast<aggregate>(pop());

因为本质上是在堆栈上传递结构的值(所以本质上是一个整数),我不明白为什么我应该这样做:

a=*((aggregate*)(&pop()));

要实现多态性,需要使用指针或引用。

#include <stdlib.h>
class obj
{
    protected:
        virtual ~obj () {};
        int data;
};
class agregate : public obj
{
    public:
        void actionA () {};
        void actionB () {};
};
obj * pop ()
{
    return new agregate;
}
int main (int argc, char * argv [])
{
    agregate * a = dynamic_cast <agregate *> (pop () );
    return EXIT_SUCCESS;
}