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

这篇具有很好参考价值的文章主要介绍了C++ Primer 6.5 特殊用途语言特性 6.6 函数匹配 知识点+练习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

默认实参

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只是调试手段,只会详细告诉程序员错误信息并终止程序,但不会处理错误

函数匹配

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

练习题

无需要重点强调的文章来源地址https://www.toymoban.com/news/detail-814160.html

到了这里,关于C++ Primer 6.5 特殊用途语言特性 6.6 函数匹配 知识点+练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Go语言中的init函数: 特点、用途和注意事项

    在Go语言中, init() 函数是一种特殊的函数,用于在程序启动时自动执行一次。它的存在为我们提供了一种机制,可以在程序启动时进行一些必要的初始化操作,为程序的正常运行做好准备。 在这篇文章中,我们将详细探讨 init() 函数的特点、用途和注意事项,希望能帮助你更

    2024年02月08日
    浏览(41)
  • 深入理解c++特殊成员函数

    在c++中,特殊成员函数有下面6个: 构造函数 析构函数 复制构造函数(拷贝构造函数) 赋值运算符(拷贝运算符) 移动构造函数(c++11引入) 移动运算符(c++11引入) 以Widget类为例,其特殊成员函数的签名如下所示: 每个方法都有哪些作用,又都有哪些注意点? 本文将针对这些方法,

    2024年02月11日
    浏览(31)
  • 网络特殊用途IP地址介绍

    因特网是全球范围内的计算机联为一体而构成的通信网络的总称,在因特网上两台计算机音的通信时,在他们所传送的数据包里都会包含某些附加信息,这些信息就像我们通过使用的电话号码一样,因特网上的每一台电脑都有一个自己的“电话号码”用来标示自己,这个“电

    2024年02月05日
    浏览(34)
  • 06-3_Qt 5.9 C++开发指南_多窗体应用程序的设计(主要的窗体类及其用途;窗体类重要特性设置;多窗口应用程序设计)

    常用的窗体基类是QWidget、QDialog 和QMainWindow,在创建 GUI应用程序时选择窗体基类就是从这 3 个类中选择。QWidget 直接继承于 QObject,是 QDialog 和 QMainWindow 的父类,其他继承于 QWidget 的窗体类还有 QSplashScreen、QMdiSubWindow和QDesktopWidget。另外还有一个类QWindow,它同时从 QObject 和Q

    2024年02月13日
    浏览(38)
  • c++ 键盘/鼠标交互+特殊输入/输出+窗口常用函数

    需要头文件: 或: 函数: 使用方法: 1.if(KEY_DOWN(某个键))或if(KEY_UP(某个键)) 检测该键是否按下/未按下 2.keybd_event(某个键,0,0,0);或keybd_event(某个键,0,KEYEVENTF_KEYUP,0); 使该键是否按下/弹起(实际使用可参照下文鼠标函数click_left()) 键码表(替换“某个键”): 函数: 使用方法: gx()或

    2024年02月09日
    浏览(48)
  • C++函数参数匹配规则

    candidate functions:函数名称相同(f1, f2, f3, f4 都是)。 viable functions:参数个数相同(排除f1, f3),且参数可以转换成相同类型(f2, f4都是viable function)。如果不存在viable functions,则编译器报参数不匹配错误(可以通过linting检查)。 最后决定参数类型是否匹配,如果匹配优先调用,不能

    2024年02月12日
    浏览(23)
  • 【高级程序设计语言C++】特殊类设计

    拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 用C++11的话,可以使用特殊的语法来实现一个不能被拷贝的类。在C++11中,可以使用删除函数(deleted function)来禁用拷

    2024年02月10日
    浏览(29)
  • C语言【几个关于字符串/字符的函数的使用、几个特殊的++】

    关于++,编译器会作一些处理(根据编译器不同),如下为gcc编译出来的结果:

    2024年02月05日
    浏览(34)
  • 开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)

    之前浅显的讲解了数据结构的部分内容:数据结构专栏 那么今天我们迎来了新的起点:C++的探索之旅 在c中: 严格的编译器会直接 报错 : rand我们都知道是产生随机数的函数,现在我定义了一个全局变量rand,显然是有 命名冲突 所以c++就提供了解决方案 想必学过c的大家第一

    2024年02月01日
    浏览(36)
  • C++三大特性—多态 “抽象类与虚函数表”

    抽象类和虚函数表是 C++中实现多态性的重要概念,它们对于学习 C++非常重要。 掌握抽象类和虚函数表的使用方法对于理解 C++的多态性是非常重要的。在 C++中,通过使用抽象类和虚函数表,可以实现基于多态性的各种功能,如继承、多态、模板等。同时,在实际应用中,抽

    2024年02月07日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包