c++——默认参数和占位参数

这篇具有很好参考价值的文章主要介绍了c++——默认参数和占位参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

默认参数和占位参数

一、默认参数

C++允许赋予函数参数默认值,即在调用该函数时,可以不写某些参数的值,编译器会自动把默认值传递给调用语句中。

1、基本语法

void fun01(int a = 1, int b = 2){
	cout << a << " "<< b << endl;
}
int main(){
	fun01(1, 2);
	fun01(1, 3);I
	fun01(14);
	fun01(1);
	fun01();
	return 0;
}

2、默认参数的规则

①默认值只能在声明中设置

②注意传参规则,实参给形参传参,是从前往后进行

③给函数参数设置默认值,从后往前进行设置

④默认参数只能在函数声明或定义时指定,不能在函数声明后再次指定。

⑤如果函数有多个参数有默认值,那么当你省略一个参数时,只有右侧的参数会使用默认值。

⑥有实参传入则使用实参,没有实参传入就使用默认参数

3、注意事项

尽管默认参数可以使函数调用更加简洁,但过多使用可能会导致代码难以理解。此外,当函数被重载时,存在多个具有不同默认参数的函数,可能会导致编译器无法确定应该调用哪个函数,从而引发歧义错误。

二、占位参数

占位参数(placeholder parameter)是一种在函数模板中使用的特殊参数,用于指示编译器在编译时确定参数类型,而不是在函数调用时指定。占位参数通常用于声明函数模板,其中参数类型在实例化时由编译器推断。

基本语法

普通函数

#include <iostream>
using namespace std;
void fun(int a, int){//第二个参数用来占位,也可以赋默认参数
	void teste1()
	fun(1,2);fun(2);
}
	int main(){
	return 0;
}

占位参数给函数形参设置的,调用时需要传参,也可以设置占位参数为默认参数:
占位参数在符号重载++时会用到

函数模板
占位参数在函数模板中使用typename或class关键字声明,并用一个占位标识符(通常是一个单字母标识符)表示。

template <typename T>
T add(T a, T b) {
    return a + b;
}

int main() {
    int sum = add<int>(5, 3);  // 显示指定模板参数为int
    double result = add(4.2, 2.7);  // 编译器推断出模板参数为double
    return 0;
}

在上面的示例中,T是一个占位标识符,用于表示函数模板的类型参数。在函数调用时,可以显式地指定模板参数,也可以由编译器根据实参类型推断出模板参数。

多个占位参数
函数模板可以具有多个占位参数,允许在实例化时指定多个类型参数。

template <typename T, typename U>
T max(T a, U b) {
    return (a > b) ? a : b;
}

int main() {
    int intMax = max(5, 3.5);  // U被推断为double,返回5
    double doubleMax = max(4.2, 2.7);  // 返回4.2
    return 0;
}

限制条件
占位参数可以在函数模板中使用,但不能在普通函数中使用。此外,C++标准库中的模板类和函数也使用占位参数来实现泛型。文章来源地址https://www.toymoban.com/news/detail-665288.html

到了这里,关于c++——默认参数和占位参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】C++11右值引用|新增默认成员函数|可变参数模版|lambda表达式

    在C++11之前,我们只有引用的概念,没有接触到所谓的左值引用或者是右值引用这种概念,从C++11开始,增加了右值引用的概念,那么现在我们将对引用进行一个概念上的区分。在此之前我们所说的引用都是左值引用,对于左值引用相关的内容,可以去看一看博主之前写的文章

    2024年02月15日
    浏览(57)
  • 【MyBatis 学习二】增删改查&& 参数占位符 #{} 和 ${}的使用

    目录 一、增删改查 🌷1、用户类 🌷2、UserMapper 🌷3、UserMapper.xml 🌷4、测试类Test 🌷5、UserService类 🌷6、UserController类 🌷7、注意点总结 二、#{} 和${} 的使用区别 🌷1、#{}与${}的区别(SQL注入) 🌷2、$的SQL注入:用户登录演示 🌷3、$的使用场景:排序+like 🌲 使用场景1:排

    2024年02月15日
    浏览(44)
  • C++17完整导引-模板特性之占位符类型模板参数

    自从 C++17 起,你可以使用占位符类型( auto 和 decltype(auto) )作为 非类型模板参数的类型 。这意味着我们可以写出泛型代码来处理不同类型的非类型模板参数。 自从 C++17 起,你可以使用 auto 来声明非类型模板参数。例如: 这允许我们为不同类型实例化非类型模板参数 N :

    2024年02月06日
    浏览(33)
  • Mybatis从0到1 SQL注入 参数占位符 XML配置 动态SQL

    学习完mybatis入门后,我们继续学习mybatis基础操作。 需求说明: 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发。 通过分析以上的页面原型和需求,我们确定了功能列表: 查询 根据主键ID查询 条件查询 新增 更新 删除 根据主键ID删除

    2024年02月16日
    浏览(48)
  • C语言中的占位符有哪些

    在C语言中,常用的占位符如下: %d:用于输出整数类型(包括short、int、long、long long等); %u:用于输出无符号整数类型(包括unsigned short、unsigned int、unsigned long、unsigned long long等); %f:用于输出浮点数类型(包括float、double、long double等); %c:用于输出字符类型(包括

    2024年02月16日
    浏览(36)
  • 自由生成各种尺寸大小的占位图片:解决设计与开发中的图片占位问题

    在设计与开发的过程中,经常需要使用占位图片来填充暂时没有真实图片的位置。传统的占位图片往往只提供固定尺寸的模板,无法满足不同尺寸的需求。为了解决这一问题,自由生成各种尺寸大小的占位图片的工具应运而生。 占位图片 | 一个覆盖广泛主题工具的高效在线平

    2024年03月09日
    浏览(63)
  • UG\NX二次开发 使用录制功能录制操作记录时,如何设置默认的开发语言?

    文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,CC++,Qt-CSDN博客 NX二次开发使用BlockUI设计对话框时,如何设置默认的代码语言?   依次打开“文件”-“实用工具”-“用户默认设置”-“用户界面”-“操作记录”-“C++”。       

    2024年02月11日
    浏览(42)
  • UG\NX二次开发 使用BlockUI设计对话框时,如何设置默认的开发语言?

    文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,CC++,Qt-CSDN博客 NX二次开发使用BlockUI设计对话框时,如何设置默认的代码语言? 依次打开“文件”-“实用工具”-“用户默认设置”-“用户界面”-“操作记录”-“C++”。   

    2024年02月11日
    浏览(58)
  • 【C++对于C语言的扩充】C++与C语言的联系,命名空间、C++中的输入输出以及缺省参数

    铁子们好啊!这是阿辉新开的专栏《拿下C++》的第一篇文章,本文主要带大家了解一下C++,带大家从C语言过渡到C++,所以大家首先要有C语言的基础,否则后面的内容你可能会异常懵逼。不会C语言的铁子,这里推荐各位先看阿辉的专栏《爱上C语言》(点击即可跳转,自荐一下

    2024年02月03日
    浏览(37)
  • 【VRTK】【VR开发】【Unity】12-占位身体

    课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 目前你会发现,就算存在非Trigger Collider的墙壁屏障等,也能够正常穿过,这会导致不沉浸的体验。你需要一个占位身体来实现让墙壁等碰撞并挡住自己的移动。同时,本篇还会告诉你如何

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包