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

C++ 重载,隐藏和覆盖 笔记

2009-12-24 09:25 176 查看
前些天学习了C++中重载,隐藏和覆盖的区别,又从网上搜集了一些关于这方面的资料。

简单整理如下。

重载



前提条件:

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);
};


一些简单的笔记。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: