您的位置:首页 > 编程语言 > C语言/C++

C++ 基类 派生类 互相转换 调用关系

2017-03-04 01:04 288 查看
#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++