C++ Primer 6.5 特殊用途语言特性 6.6 函数匹配 知识点+练习题

总思维导图

C++ Primer6.5 特殊用途语言特性 6.6 函数匹配

  • 默认实参
  • 内联函数
  • constexpr函数
  • 调试帮助
    • assert预处理宏
    • NDBUG预处理变量
  • 函数匹配
  • 练习题

默认实参

string screen(int hz=24,int wid=80,char c='')
window=screen( , ,'?');//错误!,只有尾部的实参可以省,变为默认实参
window=screen('?');//不报错,但是与本身期望不符合,把?的ASCII码赋值给hz了

在给定的作用域中一个形参只能被赋予一次默认实参
局部变量不能作为默认实参,函数结束就销毁,无法当作默认实参。
除此之外,只要表达式的类型可转换成形参所需要的类型,则可以作为默认实参

int ht();
string screen(int w=hrt());//正确,非局部变量

内联函数

将函数定义为内联函数,即加上inline,在编译时内联展开代替函数

inline const string& shorterString(const string& s1,const string& s2)
{return s1.size()<=s2.size()? s1:s2;
}cout<<shorterString(s1,s2)<<endl;
在编译时自动展开为
cout<<( s1.size()<=s2.size()? s1:s2)<<endl;

constexpr函数

在编译时就能得到这个函数的返回值

constexpr int new_sz(){return 42;}
constexpr int foo=new_sz();

调试帮助

assert预处理宏

预处理器由预编译器处理
assert就是可以打印报错信息

#include<cassert>//无需using
int main()
{int n1,n2;cin>>n1>>n2;assert(n2/n1);//为真什么都不做,为假打印错误信息//为真则是n1不为0时,无除数为0错误//为假是有除数错误cout<<n2/n1<<endl;//可由assert检测出除数错误
}

NDBUG预处理变量

就是一个开关:决定assert是不是要检查出错误
-D NDEBUG main.cpp使用命令行开启ndbug开关:不检查,assert不生效,节省开销
assert只是调试手段,只会详细告诉程序员错误信息并终止程序,但不会处理错误

函数匹配

寻找最佳作为匹配,若是两个都可以是最佳,编译器会报二义性错误

练习题

无需要重点强调的

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建一个简单的Spring Demo

要学习Spring 源码&#xff0c;一个是从Spring GitHub 上去down源码&#xff0c;然后倒入IDEA编译&#xff0c;但这种方法费时费力&#xff0c;如果你不需要对Spring 源码进行修改后&#xff0c;再编译的话&#xff0c;直接搭建一个Spring Demo 的Maven项目&#xff0c;引入Spr…

快速上手的AI工具-文心辅助学习

前言 大家好晚上好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工…

实用技巧——缺失数据的处理

缺失值 处理缺失数据的一般步骤&#xff1a; 识别缺失数据&#xff1b;检查导致数据缺失的原因&#xff1b;删除包含缺失值的实例或用合理的数值代替&#xff08;插补&#xff09;缺失值 缺失数据的分类&#xff1a; &#xff08;1&#xff09;完全随机缺失 若谋变量的缺…

怎么抹掉 Macbook系统 并将它还原为出厂设置

抹掉 Mac 并将它还原为出厂设置 借助“抹掉所有内容和设置”这项功能&#xff0c;你可以快速安全地抹掉所有设置、数据和 App&#xff0c;同时保留当前安装的操作系统。 使用“抹掉所有内容和设置” 这项功能要求装有 macOS Monterey 或更高版本&#xff0c;且使用搭载 Apple 芯…

Python基础第八篇(Python异常处理,模块与包)

文章目录 一、了解异常二、捕获异常&#xff08;1&#xff09;.异常案例代码&#xff08;2&#xff09;.读出结果 三、异常的传递&#xff08;1&#xff09;.异常传递案例代码&#xff08;2&#xff09;.读出结果 四、Python模块&#xff08;1&#xff09;.模块的导入&#xff…

Unity编程#region..#endregion以及面板提示语标签[Tooltip(““)]

C#中的#region..#endregion 在Unity中&#xff0c;#region和#endregion是用于代码折叠的预处理指令。它们并不是Unity特有的&#xff0c;而是C#语言本身提供的功能。 #region用于标记一段代码的开始&#xff0c;而#endregion用于标记一段代码的结束。在编辑器中&#xff0c;可…

JVM的组成部分(类加载器、运行时数据区、执行引擎、本地库接口)

目录 JVM作用 JVM构成 1.类加载器 类加载子系统&#xff1a; 类加载器的分类&#xff1a; 双亲委派机制&#xff1a; 2.运行时数据区 程序计数器 虚拟机栈 本地方法栈 堆 方法区 3.执行引擎 4.本地库接口 JVM作用 jvm是将字节码文件加载到虚拟机中&#xff0c;…

C++(Qt)软件调试---静态分析工具clang-tidy(18)

C(Qt)软件调试—静态分析工具clang-tidy&#xff08;18&#xff09; 文章目录 C(Qt)软件调试---静态分析工具clang-tidy&#xff08;18&#xff09;1、概述2、clang-tidy基本用法3、目前已有检查项4、Qt Creator中安装clang-tidy5、Qt Creator中使用clang-tidy6、Clang-Tidy配置…

抖音跳个人微信,有哪些解决办法?

抖音作为一个备受欢迎的短视频平台&#xff0c;为品牌和个人提供了广泛的推广机会。要有效地吸引和引导用户到微信端&#xff0c;需要掌握一些关键的引流方法。以下是抖音引流到微信的几种方法和技巧&#xff1a; 1.创建优质内容&#xff1a;确保发布的视频内容独特、有趣并富有…

java数组ArrayList(存对象)

1、dade文件 package model;public class dade {private int id;private String name;public dade() {}public dade(int id, String name) {this.id id;this.name name;}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {…

0基础如何使用全功能的Python测试框架?

如何使用pytest&#xff1f; 大纲 安装和简单使用 配置文件 断言 一. 第一步 —— 安装和简单使用 pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要特点有以下几点&#xff1a; • 1、简单灵活&#xff0c;容易上手&#xff0c;文档丰富&#xff1b; • 2、…

miniconda安装

Miniconda是一个小型版的Anaconda&#xff0c;它包含了一个包管理工具conda和Python。Miniconda适用于那些只需要管理Python包和环境&#xff0c;而不需要Anaconda中包含的大部分科学计算工具的用户。 Miniconda的安装过程相对简单。你可以从清华大学开源软件镜像站下载Minico…