栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 重载、重写(覆盖)、隐藏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 重载、重写(覆盖)、隐藏

以前没认真分辨这几个概念的区别,今天记录一下。

转载:为什么const对象只能调用const成员函数,而不能调用非const成员函数? - 阿瞒123 - 博客园 (cnblogs.com)

重点:

1.重载只能在一个类中。

2.重写只能在子类和派生类中。

3.隐藏只能是子类和派生类中。

4.重载可以重载const(很有意思),非常量对象也可以调用常成员函数,但是如果有重载的非常成员函数则会调用非常成员函数。

1.重载:就是在一个类中声明同名和返回值类型相同的函数,但参数不同

2.重写(覆盖):就是定义虚函数,子类继承重写

3.隐藏:就是派生类定义了一个和基类同名和返回值的函数。但基类的函数不定义成虚函数

4.const重载(静态)

原因:通常我们在类中定义一个函数,实际上传入的是 void Get(Base* this),这代表一个指向Base对象的指针this被传入到了Get函数中。而但对象被定义成const 时候,比如const Base a,则调用函数的时候函数中必须要有 void Get(const Base* const this),相当于void Get(Base* this) const。这就是为什么常对象只能调用常成员函数的原因。但是非常量对象可以调用常量函数,因为编译器会自动先转换为常量对象。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/931945.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号