码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 当子类的方法和父类的方法重名时...

时间:2016-03-02 14:46:06      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

C++当子类的成员函数与父类的成员函数重名时:

 

若父类没有virtual声明,子类函数可以和父类函数返回值不同,但函数名和参数列表必须相同.

则子类实例通过"."调用的是子类的函数

若子类想调用父类的函数,则需要使用 子类实例.父类::函数名() 的形式.

父类实例通过"."调用的是父类的函数

父类无法调用子类的同名函数

 

若通过指针->调用

则指针的类型 决定 调用哪个类的函数

父类地址强制转换为子类指针 也可以调用子类的函数.

 


 

若父类有virtual声明,

虚函数就固定了函数的形式,所以子类函数和父类函数的返回类型也必须一致,否则报error: conflicting return type specified for ‘virtual int CDerive::show()’

 

则通过"."调用时,

子类实例调用子类函数,父类实例调用父类函数.

 

若通过"->"调用时,

则多态性成立,即当使用基类指针通过->调用时,根据指针的内容确实是基类地址还是子类地址,分别调用对应的函数.子类地址赋给父类指针,默认调用的是子类的函数,但可以通过 父类指针->父类::函数名()  明确调用父类的函数.

 

当用子类指针通过->调用时,将父类地址强制转换为子类指针,则默认调用的仍然是其本质的函数 即 父类的函数 可以通过 子类指针->子类名::函数名() 强制调用子类的函数.

将子类指针指向子类实例地址时,默认调用子类函数,可以通过 子类指针->父类名::函数名() 强制调用父类的函数.

 

当参数不一样时,则是两个函数,

此时通过->调用函数 取决于指针变量的类型决定调用哪个函数 而与其实质值无关.

子类类型的指针可以通过 子类指针->父类名::函数名() 强制调用父类函数.

 

C++ 当子类的方法和父类的方法重名时...

标签:

原文地址:http://www.cnblogs.com/sonack/p/5234610.html

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