signed

QiShunwang

“诚信为本、客户至上”

读书笔记

2021/4/26 23:21:03   来源:

《Effective C++》读书笔记(持续更新20210426)

        • 函数签名
        • default构造函数声明为explict

函数签名

C++中的函数签名(function signature):包含了一个函数的信息,包括函数名、参数类型、参数个数、顺序以及它所在的类和命名空间。普通函数签名并不包含函数返回值部分,如果两个函数仅仅只有函数返回值不同,那么系统是无法区分这两个函数的,此时编译器会提示语法错误。

函数签名用于识别不同的函数,函数的名字只是函数签名的一部分。在编译器及链接器处理符号时,使用某种名称修饰的方法,使得每个函数签名对应一个修饰后名称(decorated name)。编译器在将C++源代码编译成目标文件时,会将函数和变量的名字进行修饰,形成符号名,也就是说,C++的源代码编译后的目标文件中所使用的符号名是相应的函数和变量的修饰后名称。C++编译器和链接器都使用符号来识别和处理函数和变量,所以对于不同函数签名的函数,即使函数名相同,编译器和链接器都认为它们是不同的函数。
————————————————
版权声明:本文为CSDN博主「fengbingchun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengbingchun/article/details/79133749

default构造函数声明为explict

在C++中,当且仅当没有定义任何构造函数时,编译器会提供默认构造函数。我们定义default这个构造函数的目的仅仅是因为既需要其他形式的构造函数,也需要默认的构造函数。我们希望这个函数的作用完全等同于使用“合成的默认构造函数”。(没有显式的给出构造函数时,编译器为我们隐式地定义的一个默认构造函数)。

在C++新标准中,如果我们需要默认的行为,那么可以通过在参数列表后面写上=default来要求编译器生成构造函数。其中,=default既可以和声明一起出现在类的内部,也可以作为定义出现在类的外部。和其他函数一样,如果=default在类的内部,则默认构造函数是内联的;如果在类的外部,则该成员默认情况下不是内联的。
————————————————
版权声明:本文为CSDN博主「OldWang-AI」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liminwang0311/article/details/53613438

如果构造函数被声明为explict,这可阻止它们被用来执行隐式类型转换,但它们仍可被用来进行显示类型转换。
在这里插入图片描述