C++普通成员函数的重定义
2011-12-08 19:46
411 查看
// test.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <cstdlib> #include <new> #include <iostream> using namespace std; class Base{ public: int f(){ cout<<"int f() Base"<<endl; return 0; } void f(int){ cout<<"void f() Derived1"<<endl; } }; class Derived1:public Base{ public: void f(){ cout<<"void f() Derived1"<<endl; } }; class Derived2:public Base{ public: void f(int){ cout<<"void f(int) Derived2"<<endl; } }; int _tmain(int argc, _TCHAR* argv[]) { Derived1 d1; Derived2 d2; Base b; b.f(); d1.f(); d2.f();//错误,定义void f(int),使得Base::f不可见。 d2.f(1); return 0; }
在派生类中定义与基类同名的函数时,不管参数和返回值是不是相同的,只要名字相同,则基类中的函数被重写。所有与该函数同名的函数都被隐藏。
相关文章推荐
- C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点
- C++ 类中不同类型成员函数的定义
- C++成员函数指针定义和调用
- C++继承时子类定义同名成员变量时的调用继承函数的问题
- C++:类的成员函数定义方式
- 为什么在C++使用pthread_create()的时候,类成员函数做线程的处理函数必须要定义成static类型的?
- Effective C++ Item 46 当需要投你非成员函数定义模板
- C++之类外定义成员函数、inline成员函数详解
- 在C++中定义类成员函数指针
- 在C++的类中,普通成员函数不能作为pthread_create的线程函数,如果要作为pthread_create中的线程函数,必须是static
- C++设计的一个小缺陷——不必强制类普通成员函数在类体中声明
- inline&nbsp;定义普通函数和类的成员函…
- 在c++中,静态数据成员可以被非静态成员函数调用吗?如果可以调用的话那为什么还要定义静态成员函数呢
- C++:成员函数实现在类定义中与在类定义外的区别
- C++第三周任务3请在原类基础上,增加成员函数,要求前三个设计成内置函数,在main()数中增加适当的调用以展示扩充类定义后的功能(最好能一次运行)。
- 重学C++ 002定义带参数的成员函数
- C++学习:inline的函数或者成员函数一定要定义在头文件中
- c++ 在类体外定义的成员函数,函数体的左括号提示:error 应输入声明
- C++之类的成员函数的调用 vs. 普通函数的调用
- C++学习(三) C++类中成员函数的定义