c++ 基础知识-函数高级

全网最详细的C++基础知识总结(收藏级!) C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。 阅读详情

c++ 基础知识-函数高级

1.函数的默认参数

#include <iostream>  
#include <string>  
using namespace std;

//函数默认参数
int fun(int a=1,int b = 2,int c = 3)
{
	return a+b+c;
}

//1.如果函数参数中有默认参数,那么从该默认参数向后的参数都必须是默认参数
//error C2548: “fun1”: 缺少参数 2 的默认参数
//error C2548: “fun1”: 缺少参数 3 的默认参数

//int fun1(int a=1,int b,int c)
//{
//	return a+b+c;
//}
//2.函数声明和函数定义只能一个具有默认参数,另一个不需要,会报重定义
//函数声明
int fun2(int a,int b,int c=1);

//函数定义
//error C2572: “fun2”: 重定义默认参数 : 参数 
int fun2(int a,int b,int c=1)
{
	return a+b+c;
}
int main()
{
	cout<<fun()<<endl;//输出6,无输入参数则按照默认参数进行
	cout<<fun(2,3,4)<<endl;//输出9,输入参数则按照输入参数进行
	return 0;
}  

2.函数的占位参数

#include <iostream>  
#include <string>  
using namespace std;
//函数占位参数,函数的形参列表可以有占位参数,用来做占位,调用函数时必须填补该位置
void func(int	 a,int)
{
	cout<<a<<endl;
}
int main()
{
	//func(1);//error C2660: “func”: 函数不接受 1 个参数
	func(1,2);
	return 0;
}  

3.函数重载

#include <iostream>  
#include <string>  
using namespace std;

//1.函数重载
//同一个作用域下,相同函数名称,形参类型不同,形参数量不同,程序调用函数时可根据所传入的参数自行调用合适的函数
void func(int	 a,int b)
{
	cout<<"func(int a,int b)"<<endl;
}
//注意返回值类型不同不行
//“int func(int,int)”: 重载函数与“void func(int,int)”只是在返回类型上不同
//int func(int	 a,int b)
//{
//	cout<<"func(int a,int b)"<<endl;
//}

void func(int	 a)
{
	cout<<"func(int a)"<<endl;
}

void func(double	a)
{
	cout<<"func(double	 a)"<<endl;
}

int main()
{
	func(1,3);//func(int a,int b)
	func(2);//func(int a)
	func(2.5);//func(double  a)
	return 0;
}  

4.函数重载可能遇到的问题

#include <iostream>  
#include <string>  
using namespace std;

//1.引用可以作为重载的条件
void func(int	 &a)
{
	cout<<"func(int &a)"<<endl;
}

void func(const int &a)
{
	cout<<"func(const int &a)"<<endl;
}

//2.函数重载过程最好不要使用默认参数,具有歧义
// error C2668: “func”: 对重载函数的调用不明确
//void func(int a,int b = 20)
//{
//	cout<<"func(int a,int b = 20)"<<endl;
//}

int main()
{
	int a = 10;
	//func(a);
	const int b = 20;
	func(a);
	func(b);
//func(a);
	return 0;
}  

《C++基础知识精讲》专栏介绍 本专栏深入讲解C++方面的基础知识,帮你理解透彻,灵活运用,适合有一定C/C++基础的程序员阅读。 阅读详情

相关推荐

C++函数详解:全面指南

函数定义包含函数体,即实现函数功能的代码块。函数声明则告诉编译器函数的存在、返回类型、参数类型和数量,但不包含函数体。// 函数声明// 函数定义除了标准库函数外,程序员还可以根据需求自定义函数。自定义函数需要遵循函数的定义和声明规则,并实现特定的功能。

一个梦想做程序员的编程小白 1089

c++默认实参详解

可以理解为在编译代码的时候,编译器并不知道我们利用了多态,它只会认为x的类型为base,然后在编译f()函数的时候,根据base的f()函数是有默认实参的,所以会先用10将实参这个位置填起来,如果后面用户自己制定了实参将10覆盖就行,所以出现了多态时子类函数可以得到父类虚函数默认参数的现象。可能会有疑问,不是虚函数的默认实参不能继承吗,而这段代码明显调用的是子类的函数,为何也能得到默认实参10呢,其实不是虚函数的子函数得到了默认实参,而是因为默认实参调用应该根据对象的静态类型确定。

zx919086028的博客 1186

C++编程基础:从面向对象到函数高级概念

本文深入探讨了C++编程语言的基础知识,涵盖了从基本语法到面向对象编程的核心概念。通过详尽的章节内容,我们对字符、数据类型、C++令牌、输入输出语句、程序结构、数组、结构体、函数以及指针等有了全面的理解。此外,文章还介绍了编程技术的发展,从非结构化编程到结构化编程,再到面向对象编程,并对类和对象的创建、成员函数、静态数据成员等面向对象技术做了深入讲解。最后,高级函数概念如多态、函数重载、内联函数、友元函数、递归等也被详细阐述。

weixin_42579969的博客 317

C语言进阶C++笔记

基础知识 C++特点 完全兼容C语言语法 有自己独立的语法和存储结构 能够更好的体现面向对象的特征 使用使用时与C语言的区别 源文件后缀名为.cpp 在Linux中编译连接C++程序 g++ xxxx.cpp 引用 基本概念 定义:是一个变量的别名,不占用内存空间;只能作为一个变量的附属存在。 格式:存储类型& 引用名 = 变量名; &的含义取决于其所在到的位置 当&am...

对的时间点 642

C++高级匹配中的NEXT[ ]函数

高级匹配中的NEXT[ ]函数 部分代码 while(pb1->next!=null) { temp=pb1;//临时指针等于pb1 zutemp=zu;//数组中的位子 cout<<"kankan"<<endl; if(temp->data!=pb2->data&&pb2==headb->next) { if(B[zu]==null) { B[zu]=1; cout<<"b["<<zu<<"]="<<1<<endl; } } else while(pb2->next!=null&&temp!=null)//&&temp->data==pb2->data) { if(temp->data==pb2->data) { cout<<"内环"<<endl; if(B[zu]==null) { cout<<"B["<<zu<<"]="<<j<<endl; B[zu]=j; } j++; zu++; pb2=pb2->next; temp=temp->next; } else if(B[zu]==null) { B[zu]=j; cout<<"b["<<zu<<"]="<<j<<endl; break; } }//内while zu=zutemp+1; pb1=pb1->next; pb2=headb->next; j=1; }//外while

STM32H5 USB虚拟串口:用Classic驱动移植CDC实践

USB虚拟串口(CDC)是嵌入式系统最常用的主机通信方式之一,本质是借助USB协议模拟串口收发,无需额外驱动即可在PC上生成COM口。其实现依赖USB设备协议栈完成枚举、控制传输与批量传输。传统USBD Classic库不依赖RTOS,代码轻量、调用链短,非常适合裸机或轻量状态机架构;而USBX功能强大但需要ThreadX内核,资源开销较大。在电机控制器、传感器采集等场景中,日志输出与参数配置仅需简单的双向数据通道,Classic驱动往往更务实。本文基于STM32H5平台,详细梳理了使用Classic驱动移

weixin_29178069的博客 333

函数的默认实参(缺省参数)

1、为什么引入默认实参机制? 如果没有引入默认实参的话会遇到的两个问题: 函数调用问题 在发起函数调用时,函数的有些参数常常使用建议的参数即可。如果没有引入默认实参机制的话,就需要在调用函数时手动的指定每一个参数。这给使用该函数的程序员造成了麻烦。有了默认实参机制,程序员只要指定必须提供的参数即可,有些提供了默认值的参数程序员如果没有指定,那么编译器会按照默认的参数进行传递。 函数扩充性问题 即...

江南又一春 1095

银河麒麟v10-arm SEALOS离线部署k8s集群(v1.22.8)

示例 如果你想保存一个名为 "my_snapshot" 的 etcd 快照到指定的对象路径你可以使用以下命令: sealos etcd save --backupPath /root --name my_snapshot 如果文件名带时间戳:my_snapshot$(date +"%Y%m%d_%H%M%S") 会生成一个形如 20230913_143045 的时间戳。--restorePath string:指定快照恢复目录(默认为 "/opt/sealos/etcd-restore")。

xjudt的博客 3285

【C++】函数高级

C++函数的重载、占位参数、默认参数

黄超的博客 2358

AGV避坑指南:海康控制系统与Modbus设备对接的那些‘坑’

本文深入解析海康AGV控制系统与Modbus设备对接中的常见问题及解决方案,涵盖通信协议对接、信号干扰、硬件层问题和软件优化策略。通过真实案例和实用技巧,帮助工程师规避典型陷阱,提升系统稳定性和效率。

l3m4n的博客 739

安检机图像处理避坑指南:从条纹校正到物质分类,那些论文里没写的工程细节

本文深入探讨了双能X射线安检机图像处理中的关键工程实践,从条纹校正到物质分类,揭示了论文中未提及的实用技巧。针对探测器校正、物质分类模糊、伪彩色系统设计等核心问题,提供了动态参数更新、空间上下文分析和自适应色彩映射等解决方案,助力提升安检系统的准确性和鲁棒性。

weixin_30325487的博客 886

C++高阶函数

在C++中,我们可以借助于函数对象、函数指针以及lambda表达式来实现高阶函数。

u010099495的专栏 3673

HTML音乐爱心3D旋转相册完整源码

HTML音乐爱心3D旋转相册完整源码

LilyCoder的博客 1379

C++目录

C++目录 C++笔记目录Dev-cpp5.4.0安装及下载C++_000-标准C++_001-基本知识C++_002-编写个加法程序C++_003-字符和字符串C++_004-大小写字母转换C++_005-putchar函数C++_006-getchar函数C++_007-puts的函数C++_008-gets的函数C++_009-setw、setfill操作符与left、rightC++_01...

cloud 1717

下采样优化实战:用ADown显著提升YOLOv11的多尺度特征保持能力

ADown 以“可编程梯度信息+多分支特征融合”打破了传统下采样的性能壁垒,为 YOLOv11 带来了多尺度特征的精准传递能力。从原理到代码集成,本教程已为你铺就了一条“小目标检测精度跃升”的实战路径。现在就动手尝试吧——当你看到模型对极小目标也能精准识别,且特征图细节完整时,你会明白这份技术探索的价值。我很乐意在你实践过程中帮你解决任何问题,让我们一起推动目标检测在下采样领域的边界。

FJN110的博客 421

TVS 管击穿电压与钳位电压的工程解析

TVS二极管的核心参数击穿电压(VBR)和钳位电压(VC)常被混淆,但二者具有本质区别。VBR是

硬核科技 476

C++ Webserver从零开始:基础知识(二)——高级I/O函数

本章将介绍一部分Linux高级I/O函数,这部分函数我不会像第一章那样每个参数都去介绍它的作用,因为它们并不像基础API那样经常使用但是这一章的API可以大大提高最终Webserver的工作效率,所以我会简要介绍每个函数的大概作用。读者在了解这一章的内容时可以初略看看,了解他们的作用,看到别人写了该API知道它的作用即可,等自己上手的时候再去搜索具体写法也不迟。

meeiuliuus的博客 1527

【AI智能体】Codex AI 辅助编程高级技能实战操作详解

Codex AI 辅助编程高级技能实战操作详解

congge 6755

0基础学C++ | 第12天 | 基础知识 |函数高级| 函数的默认参数 |函数重载

0基础学C++ | 第12天 | 基础知识 |函数高级| 函数的默认参数 |函数重载

weixin_45754224的博客 271

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C++基础知识要点--函数(Primer C++ 第五版 · 阅读笔记)

C++基础知识要点--函数(Primer C++ 第五版 · 阅读笔记)

weixin_43412762的博客 850

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【C++】基础知识和编程总结

C++面试重点 1.STL 容器相关实现 2.C++新特性的了解 3.多态和虚函数的实现 4.指针的使用 文章目录C++面试重点1.私有属性和保护属性2.C++程序的组成3.C++程序的编写思路4.const说明5.OOP的基本概念6.参数传递方式7.OOP的基本特征8.辨析重载9.对象数组和对象指针10.继承:公有、私有、保护11.this指针12.面向对象的机制:13.派生类与继承14.static静态成员(数据&函数)15.const常引用:16.派生类对基类成员的其他访问方法:17.构造函数

发现问题,并解决问题,批判性思维 2832

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++基础知识

C++基础知识 1 函数的分文件编写 创建.h后缀名的头文件 创建.cpp后缀名的源文件 在头文件中写函数的声明 在源文件中写函数的定义 newadd.h文件 #include<iostream> void newadd(int a, int b); newadd.cpp文件 #include<iostream> void newadd(int a, int b) { std::cout << a + b << std::endl; } test.

Qiang的博客 857

C++两个函数可以相互递归吗_[C++ Primer plus 心得]7.函数—C++的编程模块

本章内容包括:函数的基本知识函数原型按值传递函数参数设计处理数组的函数使用const指针参数设计处理文本字符串的函数设计处理结构的函数设计处理string对象的函数调用自身的函数(递归)指向函数的指针7.1 函数基本知识:要使用C++函数,要完成工作:1. 提供函数基本知识;2. 提供函数原型;3. 调用函数库函数是已经定义和编译好的函数,同时可以使用标准库头文件提供其原型例:标准头文件 cstr...

weixin_39865866的博客 173

C++基础及函数

前言 之前拜读完《C和指针》《Essential C++》《Effective C++》 《More Effective C++》《深度探索C++对象模型》 觉得应该写点东西记录下来,不过懒惰就搁置了 恰好最近LTT有了兴趣 从而周末赶了这篇。 基本数据类型 四种基本数据类型:整型、浮点型、指针、聚合类型 基本数据类型的定义及声明就不赘述了 后续在指针时会提及 在创建新类型名时应该使用typedef而不是#define 因为后者无法正确的处理指针类型 例如 #define d_ptr_to_char ch

刘太太多来呀 309

学懂C++ (十七):高级教程——C++ 模板 详解

C++ 模板 详解

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1210

c++直接调用函数

1、sqrt(x) 取x的平方根。 2、pow(x,y) 值为x的y次方。 3、abs(x) 取x的绝对值。 4、floor(x) 返回一个小于或等于x的最大整数。 5、setw(x) 空x个空格。 6、strcpy(s1,s2) 复制字符串s2到字符串s1。 7、strlen(s1) 返回字符串s1的长度。 8、strcat(s1,s2) 连接字符串 s2 到字符串 s1 的末尾。 9、strchr(s1,ch) 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现

qq_55196230的博客 2848
上一篇: 剑指offer-刷题笔记-中难题-JZ34 二叉树中和为某一值的路径(二)
下一篇: c++ 基础知识-类和对象的访问权限
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值