码迷,mamicode.com
首页 > 其他好文 > 详细

类中重载和重写的区别

时间:2015-07-13 14:04:21      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:重写   重载      

类中函数重载
必须在同一个类中进行
子类无法重载父类的函数,父类同名函数将被名称覆盖
重载是在编译期间根据参数类型和个数决定函数调用

类中函数重写
必须发生于父类与子类之间
并且父类与子类中的函数必须有完全相同的原型
使用virtual声明之后能够产生多态(如果不使用virtual,那叫重定义)
多态是在运行期间根据具体对象的类型决定函数调用

#include <iostream>

using namespace std;

class Parent
{
public:
                 void print (int a)
                {
                                 cout << "a:" <<a << endl;
                }
};

class Child :public Parent
{
public:
                 void print (int a,int b)
                {
                                 cout << "a:" << a << " b:" << b << endl;
                }
};
void main ()
{
                 Child c1 ;
                 // c1.print (5);
                 //这样写是不对的(见图1),因为重载只能在类的内部,父类与子类之间是重写,不能重载

                 c1.Parent ::print(5); 
                 //这样写是可以的,因为是public继承,所以指定域是可以的,但这并不是重载
                 system("pause" );
}

图1:
技术分享

1 子类里面的print无法重载父类里面的print
2 当父类和子类有相同的函数名、变量名出现,发生名称覆盖

版权声明:本文为博主原创文章,未经博主允许不得转载。

类中重载和重写的区别

标签:重写   重载      

原文地址:http://blog.csdn.net/nwd0729/article/details/46861253

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!