1. 摘录

默认参数指的是当函数调用中省略了实参时自动使用的一个值。

默认参数并非编程方面的重大突破,而只是提供了一种便捷的方式。使用默认参数,可以减少要定义的析构函数、方法以及方法重载的数量。

试图在同一个文件(或转换单元)中使用同一种类型的显式实例和显式具体化将出错。

2. 最佳函数匹配

完全匹配 > 提升转换 > 标准转换 > 用户定义的转换

通常有两个函数完全匹配是错误的,但有两个例外。

  • const和非const之间的区别只适用于指针和引用指向的数据
  • 非模板函数将优于模板函数
  • 在都是模板函数的情况下,较具体的模板函数优先

3. 关键字decltype

 template<class T1, class T2>
void ft(T1 x, T2 y)
{
decltype(x + y) xpy = x + y; // make xpy the same type as x + y
}

为了判断一下语句,编译器必须遍历一个核对表

 decltype(expression) var;

STEP1. 如果expression是一个没有用括号括起的标识符,则var的类型与该标识符的类型相同,包括const等限定符。

STEP2. 如果expression是一个函数调用,则var的类型与函数的返回类型相同。 (并不实际调用函数)

STEP3. 如果expression是一个左值,则var为指向其类型的引用。

STEP4. 如果前面的条件都不满足,则var的类型与expression的类型相同。

4. C++11后置返回类型

 template<class T1, class T2>
auto h(int x, float y) -> double
{/* function body */}

《C++ Primer Plus 6th》读书笔记 - 第8章 函数探幽的更多相关文章

  1. C++ Primer Plus 6th 读书笔记 - 第6章 分支语句和逻辑运算符

    1. cin读取错误时对换行符的处理 #include <iostream> using namespace std; int main() { double d; char c; cin ...

  2. 《C++ Primer 4th》读书笔记 第7章-函数

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3912413.html

  3. C++ primer plus读书笔记——第8章 函数探幽

    第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...

  4. 《C++Primer中文版》读书笔记——第1章 开始

    istream对象:cin(标准输入对象); ostream对象:cout(标准输出对象) cerr(输出错误和警告) clog(输出一般性信息) 读取数量不定的输入数据,eg , sum=; whi ...

  5. 《C++ Primer 4th》读书笔记 第3章-标准库类型

        原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3911534.html

  6. 《C++ Primer 4th》读书笔记 第4章-数组和指针

    原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3911573.html

  7. 《C++ Primer 4th》读书笔记 第5章-表达式

    原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3912114.html

  8. 《C++ Primer 4th》读书笔记 第6章-语句

    原创文章,转载请注明出处: http://www.cnblogs.com/DayByDay/p/3912407.html

  9. 《C++ Primer 4th》读书笔记 第8章-标准IO库

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936457.html

随机推荐

  1. 【线段树】【3-21个人赛】【同样的problemB】

    同一道题  http://blog.csdn.net/zy691357966/article/details/44680121 区间查询最大值 用线段树 比单调队列慢 #include <cst ...

  2. JS中的Function对象

    Function是函数的原型,所有的函数都来源于Function,获得函数的方法有两种类型,分为动态函数和函数继承. 动态函数 创建一个Function语法: var func = new Funct ...

  3. 关于js对象值的传递

    结合红宝书和网上的一些文章,记录下自己对关于js对象的值的传递的一些理解. js对象是保存在堆内存中的,当把对象赋值给变量时,是把对象在堆内存的引用(地址)赋值给了变量,变量通过地址来访问对象.下面来 ...

  4. Android 上多方式定位元素(python)

    Android 上多方式定位元素(python) 在学习实际UI自动化测试的时候,首先就需要定位元素,然而定位元素也是最头疼的地方,因为元素各种控件名称的缺失会影响元素的准确定位.下面针对Androi ...

  5. 取得网站的IP 地址

    select utl_inaddr.get_host_address('smtp.163.com') ipaddress from dual;

  6. 解决Qt中QTableWidget类方法setItem 时导致程序崩溃问题

    在为一个音乐播放器增加功能时莫明奇妙的出现程序崩溃,定位到是由于QTableWidget 的setItem方法导致的,最终在此处找到了解决方式. 大致是说不能在setItem之前连接cellChang ...

  7. Visual C++ 64bit应用程序项目设置

    Visual Studio 2005 This topic describes how to set up C++ applications to target 64-bit platforms us ...

  8. Java文件IO操作应该抛弃File拥抱Path和Files

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream;import java.nio.file.FileSystem; ...

  9. gridView行号的显示

    我们在进行开发的时候,很多地方希望dataGridview或girdView显示行号,这里我来说一下两种的实现方法 在girdView中很简单很好实现,我在这里写一下代码,具体其他功能可以看其带的DE ...

  10. MYSQL设置字段数据过长自动截断

    自动截断如下设置: windows: 修改my.ini: [mysqld] sql-mode="STRICT_TRANS_TABLES" linux: 修改/ect/mysql/m ...