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

c++子类和父类成员函数重名

2017-01-21 16:01 483 查看
1、子类和父类函数名相同,base::fun()函数有virtual关键字,则由实际绑定的类型决定调用哪个函数。

#include<iostream>
using namespace std;

class base
{
public:
virtual void fun()
{
cout << "base的fun()被调用"<< endl;
}
};

class subClass :public base
{
public:
void fun()
{
cout << "subclass的fun()被调用"<<endl;
}
};

void main()
{

subClass sc;

base &b = sc;
b.fun();
}
因为b实际绑定的对象是子类,所以调用子类的函数,输出"subclass的fun()被调用"

2、子类和父类函数名相同,但base::fun()函数没有virtual关键字,则由对象的类型决定调用哪个函数。



#include<iostream>
using namespace std;

class base
{
public:
/*	 virtual */void fun()
{
cout << "base的fun()被调用"<< endl;
}
};

class subClass :public base
{
public:
void fun()
{
cout << "subclass的fun()被调用"<<endl;
}
};

void main()
{

subClass sc;

base &b = sc;
b.fun();
}

尽管b绑定的是子类的对象,但base::fun()函数没有virtual关键字,而b是父类对象,所以会调用父类base::fun(),输出

"base的fun()被调用"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: