#include<iostream>
using namespace std;
class A
{
public:
A(int a) : _a(a )
{
std::cout << "this is A" << _a << std::endl;
}
void GetA()
{
std::cout << "get a" << std::endl;
}
public:
int _a;
};
class AA :public A
{
public:
AA(int a, int aa) : _aa(aa), A(a)
{
std::cout << "this is AA" << _aa << std::endl;
}
void GetA()
{
std::cout << "get b" << _aa << std::endl;
}
void SetA(int a)
{
_aa = a;
}
int _aa;
};
int main()
{
A* a = new A(10);
AA * aa = new AA(10, 100);
/*
* 指向基类的派生类对象 GetA() 基类不是虚函数 输出 get a
* 如果基类是 虚函数 则 get b
* */
A * b = aa;
b->GetA();
/*
* 指向派生类的基类对象 GetA() 基类不是虚函数 调用 派生类
* 如果基类是 虚函数 则 调用 基类
* */
AA * cc = static_cast<AA*>(a);
cc->SetA(50);
AA * dd = static_cast<AA*>(a);
dd->GetA();
return 0;
}
C++ 基类 派生类 互相转换 调用关系
最新推荐文章于 2024-06-03 23:52:27 发布