
C++助教篇3_Week2不完全知识点
函数的多态性:允许具有不同功能的函数使用相同的函数名,从而通过编译时的函数名调用不同的函数。 对象行为的多态性:允许将父对象赋值为其子对象的引用,子对象的行为会影响父对象的行为。 静态多态性:在程序编译时就知道调用的函数的全部信息,称为编译时多态性。 动态多态性:在程序运行时动态确定调用的函数,称为运行时多态性。 函数重载是一种多态现象。 编译原理:重载函数符号表中的函数名会有所不同,例如: 函数重载常用于实现功能类似但处理数据类型不同的问题。 编译器选择最合适的重载函数的过程称为重载决策。 函数名称必须相同。 参数列表必须不同(个数、类型或顺序至少有一个不同)。 返回类型可以相同也可以不同。 只有返回类型不同不足以成为函数重载。 构造函数也可以被重载,只要形参列表不同。 注意引用参数的格式。 每个类必须有一个构造函数,未定义构造函数时会使用默认构造函数。 函数名的功能应保持一致,不要用同一函数名实现完全不相关的功能。 构造函数的形参列表必须唯一。 默认参数值必须从右往左写。 一旦开始使用默认参数值,后续参数也必须使用默认值。 默认参数值只允许在函数声明时设置,不允许在函数定义时再次设置。 取地址符号: 引用符号: 引用和指针的本质不同,引用是别名,指针是地址。 引用只能引用已存在的对象,不允许空引用。 引用在编译时需要初始化,不允许先声明后赋值。 引用可以用在函数形参中,避免拷贝大型对象。 引用自增操作与指针自增操作不同,引用操作会递增引用变量的值。
发布日期:2021-05-08 04:54:04
浏览次数:23
分类:精选文章
本文共 1468 字,大约阅读时间需要 4 分钟。
多态与函数重载
多态的概念
多态是面向对象编程中的一个重要概念,字面意思是“多种状态”。在C++中,多态主要体现在接口的多种不同的实现方式上。可以用“打”这个字来类比,打字有很多种意思,分别对应不同的函数实现。
C++中的表现形式
C++中的多态主要体现在以下两个方面:
多态的实现角度
从系统实现的角度来看,多态可以分为静态多态性和动态多态性两种:
函数重载
函数重载是C++中实现多态的一种重要方式,允许多个同名函数共存,但每个函数的参数必须有所不同。参数的个数、类型或顺序至少有一个与其他函数不同。
函数重载的理解
int sum(int a, int b, int c);int sum(int a, int b);float sum(float a, float b, float c);
函数重载的规则
函数重载的最佳匹配
在有多个重载函数可以匹配的情况下,编译器会根据参数类型的隐式转换排序,选择最合适的函数。例如:
void f(int i);void f(long int li);void f(char *p);void f(double d, int i);
调用 f(0)
时,0 可以被看作 int
、long int
或 char*
类型。编译器会选择最合适的函数。
函数重载的注意事项
默认参数值功能
在定义函数时,可以为形参赋默认值,函数调用时可以省略这些参数。默认参数值的规则如下:
引用
引用是给变量起一个别名,常用于函数形参。引用变量和其所指向的变量指向相同内存地址。C++中的引用符号 &
有两个含义:
b = &a;
表示 b
指向 a
的地址。int b = a;
表示 b
是 a
的引用。引用与指针的区别
总结
多态和函数重载是C++编程中的核心概念,理解它们是掌握面向对象编程的关键。通过合理使用多态和函数重载,可以编写更高效、更灵活的代码。在使用默认参数值和引用时,需要遵守相应的规则,确保代码的正确性和安全性。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年03月26日 01时30分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1004 Counting Leaves (30分)
2019-03-05
1093 Count PAT‘s (25分) 含DP做法
2019-03-05
一篇解决JMM与volatile详解(二)
2019-03-05
数据结构之数组与经典面试题(二)
2019-03-05
无锁并发框架-Disruptor的使用(二)
2019-03-05
Android wm命令
2019-03-05
boot.img 解包与打包
2019-03-05
Android4.4 平板背光设置
2019-03-05
spring boot@Value和bean执行顺序问题
2019-03-05
codeforces The Eternal Immortality 题解
2019-03-05
蓝桥杯 历届试题 幸运数 (堆+DFS)
2019-03-05
微信js-sdk使用简述(分享,扫码功能等)
2019-03-05
selenium 的介绍和爬取 jd数据
2019-03-05
【分享-一键在线抠图】在线免费去除图片背景
2019-03-05
layui表格checkbox选择全选样式及功能
2019-03-05
mxsrvs支持thinkphp3.2伪静态
2019-03-05
mui HTML5 plus 下载文件
2019-03-05
环信SDK 踩坑记webIM篇(一)
2019-03-05
通信基础知识
2019-03-05