64,649
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <stdlib.h>
using namespace std;
class Base1 {
public:
virtual void f() { cout << "Base1::f" << endl; }
void g(){cout<<"Base1::g"<<endl;}
};
class C:public Base1 {
public:
virtual void f() { cout << "C::f" << endl; }
void g(){cout<<"C::g"<<endl;}
void h(){cout<<"C::h"<<endl;}
};
int main()
{
Base1 *b1 = new C();
b1->f();//C::f
b1->g();//Base1::g
//b1->h();//这样调用是错误的,基类中没有h()
C *cc = new C();
cc->f();//C::f
cc->g();//C::g
cc->h();//C::h
system("pause");
return 0;
}
希望对你有用。
class A
{
public:
A(){}
~A(){}
virtual void sound(){ OutputDebugString(TEXT("A"));}
};
class B :public A
{
public:
B(){}
~B(){}
virtual void sound(){ OutputDebugString(TEXT("B"));}
};
class C :public A
{
public:
C(){}
~C(){}
virtual void sound(){OutputDebugString(TEXT("C"));}
};
void CTestUserDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
A *arry[2]={0};
B b;
C c;
arry[0]=&b;
arry[1]=&c;
for(int i=0;i<2;i++)
{
arry[i]->sound();//sound是虚函数会输出 B C ; 但是,如是不是虚函数,就只能输出 A A 了.这就是虚函数的用处所在.
}
}