C++ 重载,隐藏和覆盖 笔记
2009-12-24 09:25
176 查看
前些天学习了C++中重载,隐藏和覆盖的区别,又从网上搜集了一些关于这方面的资料。
简单整理如下。
重载
前提条件:
1、成员函数在同一个作用域呢。
2、成员函数的函数名必须相同。
3、成员函数的参数在顺序,个数,类型上至少有一个不相同。或者是常函数,或者参数中const修饰的指针或引用,都可以做为重载的条件。
覆盖
前提条件:
1、成员函数在不同的作用域内。
2、必须要有Virtual 修饰。
3、函数的名称,参数及其他必须完全相同。
隐藏
前提条件:
1、派生类中含有和基类相同的函数名,但是参数不相同。
2、派生类中中成员函数和基类的成员函数名称,参数等全部完全相同,但是基类中的成员函数没有Virtual 关键字修饰。
一些简单的笔记。
简单整理如下。
重载
前提条件:
1、成员函数在同一个作用域呢。
2、成员函数的函数名必须相同。
3、成员函数的参数在顺序,个数,类型上至少有一个不相同。或者是常函数,或者参数中const修饰的指针或引用,都可以做为重载的条件。
class A { public: A(); ~A(); void test(); void test(int arg); void test() const; const void test();//Error, void test(int *aP); void test(const int *aP); };
覆盖
前提条件:
1、成员函数在不同的作用域内。
2、必须要有Virtual 修饰。
3、函数的名称,参数及其他必须完全相同。
class Base { public: virtual test(int arg); }; class Derived:public Base { public: virtual test(int arg);//这里virtual 可有可无。 };
隐藏
前提条件:
1、派生类中含有和基类相同的函数名,但是参数不相同。
2、派生类中中成员函数和基类的成员函数名称,参数等全部完全相同,但是基类中的成员函数没有Virtual 关键字修饰。
class Base { public: void test(int arg); }; class Derived():public Base { public: void test(float arg); };
一些简单的笔记。
相关文章推荐
- c++ 中函数的重载 覆盖 隐藏(笔记)
- C++学习笔记-----继承体系中函数的重载,覆盖和隐藏的区别
- [ZZ]c++ 覆盖、重载、隐藏
- c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)
- C++成员函数重载、覆盖(重写)和隐藏
- C++ 重载、覆盖与隐藏
- C++中的重载、覆盖(重写)、隐藏分别指的什么?
- c++ 类继承中的隐藏、覆盖、重载与using使用
- C++基本概念:重载、覆盖、隐藏
- 高质量c++(重载、覆盖、隐藏)
- C++中继承技术引发的问题:重载(overload),覆盖(override)和隐藏(hide)的区别
- C++ 类成员函数的重载(overload),重写/覆盖(override),隐藏
- C++中的重载,隐藏,覆盖,虚函数,多态浅析
- c++多态、重写、覆盖、隐藏、重载
- c++虚继承、覆盖、重载、隐藏
- C++中重载、重写(覆盖)和隐藏的区别实例分析
- C++ 重载、覆盖、隐藏
- C++重载、覆盖、隐藏
- c++: 重载 覆盖 隐藏
- C++中重载、重写(覆盖)和隐藏的区别