c++子类和父类成员函数重名
2017-01-21 16:01
483 查看
1、子类和父类函数名相同,base::fun()函数有virtual关键字,则由实际绑定的类型决定调用哪个函数。
2、子类和父类函数名相同,但base::fun()函数没有virtual关键字,则由对象的类型决定调用哪个函数。
尽管b绑定的是子类的对象,但base::fun()函数没有virtual关键字,而b是父类对象,所以会调用父类base::fun(),输出
"base的fun()被调用"
#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()被调用"
相关文章推荐
- c++子类和父类成员函数重名
- c++子类和父类成员函数重名
- c++子类和父类成员函数重名
- c++子类和父类成员函数重名
- c++子类和父类成员函数重名
- C++子类在成员函数中不要转型为父类
- c++ 父类指针转换为子类指针后调用子类的成员函数问题
- c++ 父类成员函数的参数中有子类类型的对象 (前置声明解决)
- C++和Java在 子类继承父类时,两者成员函数重写和重载的特性
- C++ 类的继承,子类以及之类的对象 对父类成员函数的访问权限
- C++中指向子类的父类指针访问父、子类成员时的权限和函数隐藏规则
- C++和Java在 子类继承父类时,两者成员函数重写和重载的特性
- c++子类能从父类中继承父类的静态成员函数吗
- C++子类对象隐藏了父类的同名成员函数(隐藏篇)
- C++ 子类和父类同名成员变量或函数
- c++父类指针强制转为子类指针后的测试(帮助理解指针访问成员的本质)(反多态)
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- C++ 中有没有不能被子类继承的父类成员?
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- C++ 子类能不能改变父类中成员的访问权限?