函数的设计

news2025/1/12 1:01:59

一、默认参数

C++允许在函数定义或声明时,为形参指定默认值,即默认参数(default argument)。

(1)函数定义与函数声明只能设置一次默认参数。

(2)可以设置多个默认参数,设置的顺序自右向左。

(3)默认值可以是常量、全局变量、函数调用等,不可以是局部变量。

#include <iostream>
using namespace std;
int p1 = 2, p2 = 10;
int max(int a, int b)
{
	return a>b?a:b;
}
int volume(int L=1, int W=p1+p2, int H=max(p1,p2))
{
	return L*W*H;
}

int main()
{
	cout << "V0 = " << volume() << endl;
	cout << "V1 = " << volume(5) << endl;
	cout << "V2 = " << volume(5, 10) << endl;
	cout << "V3 = " << volume(5, 10, 15) << endl;
	return 0;
} 

 

 

二、函数重载

函数重载(function overloading)是在同一个域中用同一个函数名来定义多个函数,但函数参数列表应彼此有不同。

(1)重载函数的形参必须不同(个数不同或类型不同)。

(2)编译程序将根据实参和形参的类型及个数的最佳匹配来选择调用哪一个函数。

(3)不要将不同功能的函数声明为重载函数,以免出现调用结果的误解、混淆。

#include <iostream>
using namespace std;

int max(int a, int b)
{
	return a>b?a:b;
}

double max(double a, double b)
{
	return a>b?a:b;
}

int max(int a, int b, int c)
{
	int temp = a>b?a:b;
	return temp>c?temp:c;
}


int main()
{
	int a_int = 4, b_int = 3, c_int = 5;
	cout << "int max(int a, int b) = " << max(a_int, b_int) << endl;
	double a_double = 5.78, b_double = 1.14;
	cout << "double max(double a, double b) =  " << max(a_double, b_double) << endl;
	cout << "int max(int a, int b, int c) = " << max(a_int, b_int, c_int) << endl;
	return 0;
} 

三、函数模板

函数模板(function template)是一个独立于类型的函数,可作为一种模式,产生函数的特定类型的版本。

template<模板形参表>返回类型 函数名(形参列表)

{

        函数体

}

#include <iostream>
using namespace std;

template <class C> 
C my_add(C a, C b)
{
	return a+b;
}

template <class T>
T my_max(T a, T b)
{
	return a>b?a:b;
}

int main()
{
	int a_int = 3, b_int = 4;
	double a_double = 3.14, b_double = 4.63;
	cout << "my_add(a_int, b_int) = " << my_add(a_int, b_int) << endl;
	cout << "my_add(a_double, b_double) = " << my_add(a_double, b_double) << endl;
	
	cout << "my_max(a_int, b_int) = " << my_max(a_int, b_int) << endl;
	cout << "my_max(a_double, b_double) = " << my_max(a_double, b_double) << endl;
	return 0;
} 

 

 

四、库函数的调用

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

#define pi 3.1415926535

int main()
{
	double x, y;
	x = pi/2;
	y = sin(x);
	cout << "y = sin(x) = sin(pi/2) = " << y << endl;
	y = cos(x);
	cout << "y = cos(x) = cos(pi/2) = " << y << endl;
	return 0;
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/153923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【精华】搞定JVM调优学习

JVM 介绍 1. 什么是 JVM JVM 是 Java Virtual Machine&#xff08;Java 虚拟机&#xff09;的缩写。一台执行 Java 程序的机器。 2 .JAVA 语言的执行原理 计算机语言&#xff1a; 计算机能够直接执行的指令。这种指令和系统及硬件有关。 计算机高级语言&#xff1a; 在遵循…

「数据」驱动行业拐点,毫末智行冲刺自动驾驶3.0时代

“毫末预计&#xff0c;到2025年中国高阶辅助驾驶搭载率将达到70%。而在汽车新消费领域&#xff0c;中国汽车市场增换购消费比例将达到60%&#xff0c;智能驾驶功能成为必选因素&#xff0c;并迎来商业化的加速发展。”1月5日&#xff0c;第七届HAOMO AI DAY上&#xff0c;毫末…

黑马学ElasticSearch(五)

目录&#xff1a; &#xff08;1&#xff09;DSL查询语法-DSL查询分类和基本语法 &#xff08;2&#xff09;DSL查询语法-全文检索查询 &#xff08;3&#xff09;DSL查询语法-精确查询 &#xff08;4&#xff09;DSL查询语法-地理查询 &#xff08;5&#xff09;DSL查询语…

计算机网络(一)

计算机网络1 概述1.1 计算机网络的作用1.2 因特网概述1.2.1 网络的网络1.2.2 Internet和internet的区别1.2.3 因特网发展的三个阶段1.2.4 ISP介绍1.2.5 ISP分类1.2.5.1 主干ISP1.2.5.2 地区ISP1.2.5.3 本地ISP1.2.6 因特网交换点 IXP1.3 因特网的组成1.3.1 因特网的边缘部分1.3…

资产管理4大难点,如何破解?

随着企业业务扩大、人员增多&#xff0c;固定资产的数量和种类也会随着增加。此时&#xff0c;如何高效管理企业资产就成为很多企业亟待解决的一大难题。 传统资产管理4大难点 01.资产管理部门需要联系采购部门、使用部门、财务部门等收集数据&#xff0c;汇总难且工作量大&…

vacuum移除不必要的CLOG文件

迫切模式弥补了惰性模式的缺陷。它会扫描所有页面&#xff0c;检查表中的所有元组&#xff0c;更新相关的系统视图&#xff0c;并在可能时删除不必要的CLOG文件与页面。当满足以下条件时&#xff0c;会执行迫切模式。pg_database.datfrozenxid<(OldestXmin-vacuum_freeze_ta…

【多线程】【C++ 知识点】pthread_join学习

目录pthread_join进程id和线程idpthread_join pthread_join() 主线程会进入阻塞装题&#xff0c;pthread_join()之后的代码&#xff0c;只有等待子进程退出之后才能执行。 代码块A pthread_create(&id, NULL, Fn, NULL);pthread_create(&id_1, NULL, Fn, NULL);pthre…

jdk1.8 更替为 oepnJdk8遇到的坑

背景&#xff1a;客户服务器因为说jdk要收费&#xff0c;所以要求将jdk1.8替换为openJdk&#xff0c;本地测试ok&#xff0c;则将服务器的jdk替换为openJdk8&#xff0c;出现一个登录异常&#xff0c;调查发现是一个sso登录的问题&#xff08;单点登录&#xff09;&#xff0c;…

Rhce第一次作业

chrony服务部署&#xff1a;两台机器a: 第一台机器从阿里云同步时间&#xff0c;第二台机器从第一台机器同步时间1.查看防火墙是否关闭&#xff0c;若未关闭&#xff0c;关闭防火墙2.打开chrony配置文件3.向配置文件中写入阿里云时间服务器&#xff0c;并允许两台机器所在的网段…

从0到1完成一个Vue后台管理项目(十八、基础地图绘制)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

spring restTemplate的坑----会对String类型的url中的特殊字符进行转义

&#x1f4e2; &#x1f4e2; &#x1f4e2; &#x1f4e3; &#x1f4e3; &#x1f4e3;哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步 &#x1f91d; &#x1f91d;一位上进心十足的【Java ToB端…

基于OpenCV实现两种方法测量圆弧长度(步骤 + 源码)

导 读 本文主要介绍基于OpenCV实现两种方法测量圆弧长度(步骤 + 源码)。 背景介绍 要求:如上所示,分别用OpenCV计算出图1和图2中圆弧的长度。因为OpenCV中没有提供现成计算圆弧的方法,所以需要自己编写,本文将提供2种不同的方法来实现,仅供参考。 实现步骤 首…

mmsegmentation 训练Binary segmentation

1.一天最无聊的事从搭环境开始 1.conda create -n swin python3.7 2.conda activate swin 3.conda install pytorch1.7.0 torchvision0.8.0 torchaudio0.7.0 cudatoolkit11.0 4.pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu110/torch1.7.0/index.h…

Keil + STM32学习嵌入式数据结构-01

视频链接 初识数据结构&#xff0c;十天搞定嵌入式数据结构_哔哩哔哩_bilibili 课程目的 学会嵌入式经常使用的数据结构 具备基础知识 具有C语言基础&#xff08;结构体、指针、内存&#xff08;malloc)&#xff09; 具有数据结构的基础知识&#xff0c;因此提及到的基础…

Android 深入系统完全讲解(8)

2 Smali 调试 Smali 是安卓 Apk 反编译出来的格式&#xff0c;类似于我们 PC 上面的汇编语言。语法可以参考这个文 章&#xff1a;https://blog.csdn.net/yuanguozhengjust/article/details/80493963 PC 上的反编译调试工具用 OD 和 IDA&#xff08;这个也可以调试 Android &…

Java 调用 扫描仪的技术该如何选择?

文章目录Java 调用 扫描仪的技术该如何选择?详细介绍;&#xff08;1&#xff09;TWAIN&#xff08;2&#xff09;Kodakimg&#xff08;3&#xff09;Dynamic TWAIN ActiveX&#xff08;4&#xff09;WIA&#xff08;用于桌面应用程序&#xff09;开发应用程序&#xff0c;您可…

计算机组成原理习题一

计算机组成原理习题一 文章目录计算机组成原理习题一题目答案题目 1.某数的IEEE单精度浮点数存储形式为C1F00000H&#xff0c;则其所表示的十进制数真值是多少&#xff1f;要求写出详细求解过程以及最终结果。 2.求出数据10010100110的海明码&#xff0c;可检/纠错一位错&…

【实战篇】40 # 如何实现3D地球可视化?

说明 【跟月影学可视化】学习笔记。 如何实现一个 3D 地球 学习笔记源码实现&#xff1a;https://github.com/kaimo313/visual-learning-demo 整体实现效果如下&#xff1a; 1、绘制一个 3D 球体 <!DOCTYPE html> <html lang"en"><head><m…

五、数据导入与基本的 SELECT 语句

文章目录一、数据导入指令二、基本查询语句2.1 SELECT ...2.2 使用 SELECT 语句查询一个数据表2.3 查询表中的一列或多列三、单表查询3.1 用 DISTINCT 关键字去除结果中的重复行3.2 使用 AS 设置别名3.3 着重号3.4 运算符3.4.1 算术运算符3.4.2 比较运算符3.4.3 逻辑运算符3.4.…

k8s之Deployment

写在前面 本文一起看下Deployment API对象&#xff0c;该对象的作用是保证POD的高可用&#xff0c;即保证POD的可用数量一直维持在某个期望状态中&#xff0c;比如期望状态是有3个POD&#xff0c;当有一个POD意外终止时&#xff0c;则会自动再启动一个新POD&#xff0c;所以De…