c_cpp 向下或向上转换的C ++类示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 向下或向上转换的C ++类示例相关的知识,希望对你有一定的参考价值。

#include <iostream>

//c++ down/up casting clases example
//added constructor example

//base class
class Base
{
  public:
  int type;
  Base* next;
  Base* prev;
  
  int getType()
  {
    return type;
  }
  
  void setType(int t)
  {
    type = t;
  }
};

class IntObj: public Base
{
  public:
  long value;
  //constructor with init list
  IntObj(long val): value(val)
  {
    type = 3;
  }
  
  long getValue()
  {
    return value;
  }
  
  void setValue(long val)
  {
    value = val;
  }
};



int main() {
  Base* b = new IntObj(8);
  std::cout << b->getType() << "\n";
  std::cout << b->type << "\n";
  //static cast needed for down casting
  IntObj* i = static_cast<IntObj*>(b);
  //or a reinterpret_cast 
  IntObj* j = reinterpret_cast<IntObj*>(b);
  std::cout << j->getValue() << "\n";
  std::cout << j->type << "\n";
}

以上是关于c_cpp 向下或向上转换的C ++类示例的主要内容,如果未能解决你的问题,请参考以下文章

C++中的虚函数(类的向上转换,和向下转换)

在java中,两个子类可否互相转换?

40-向下转换 as 定义接口

8.JAVA-向上转型向下转型

学习向上转型和向下转型的一个好例子

向上转型和向下转型