c_cpp 在C ++中进行强制转换和向下转换

Posted

tags:

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

#include <iostream>

//c++ down/up casting clases example

//base struct
struct Base
{
  int type;
  Base* next;
  Base* prev;
  
  int getType()
  {
    return type;
  }
};

struct IntObj: Base
{
  long value;
  IntObj(long val): value(val) {  }
  
  long getValue()
  {
    return value;
  }
};



int main() {
  Base* b = new IntObj(8);
  std::cout << b->getType() << "\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";
}

以上是关于c_cpp 在C ++中进行强制转换和向下转换的主要内容,如果未能解决你的问题,请参考以下文章

c语言强制转换的疑问

SV强制类型转换和常数

c和c++中,对结构体进行强制类型转换!

int 与long int类型转换

在 C/C++ 中高效地在十六进制、二进制和十进制之间进行转换

C++ 子类化、继承和强制转换