![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++11
文章平均质量分 76
yaoyaohyl
lqiqi.cn
展开
-
委派构造函数
而通过成员的初始化委派构造函数,以及继承构造函数,C++ 中的构造函数的书写将进一步简化,这对程序员尤其是库的编写者来说,无疑是有积极意义的。可以看到,在代码清单3-11中,我们在Info(int) 和Info(char)的初始化列表的位置,调用了“基准版本"的构造函数Info()。在委托构造的链状关系中,而在构造函数比较多的时候,我们可能会拥有不止一个委派构造函数,而一些目标构造函数很可能也是委派构造函数,这样一来,我们就可能在委派构造函数中形成链状的委派构造关系,如代码清单 3-13 所示,原创 2022-11-19 10:30:26 · 397 阅读 · 0 评论 -
继承构造函数
另外我们还需要了解的一些规则是,如果基类的构造函数被声明为私有成员函数,或者派生类是从基类中虚继承的,那么就不能够在派生类中声明继承构造函数。多个基类中的部分构造函数可能导致派生类中的继承构造函数的函数名、参数(有的时候,我们也称其为函数签名)都相同,那么继承类中的冲突的继承构造函数将导致不合法的派生类代码,如代码清单3-7所示。可以看到,在代码清单3-6中,我们的基类的构造函数A(inta=3,double=2.4)有一个接受两个参数的构造函数,且两个参数均有默认值。变量b的定义应该是不能够通过编译的,原创 2022-11-05 10:47:07 · 1644 阅读 · 0 评论 -
friend友元
而在需要进行测试的时候,我们使用Validator为模板参数,实例化出DefenderTest及AttackerTest版本的类,这个版本的特点是,Validator是它们的友元,可以任意访问任何成员函数。值得注意的是,在代码清单2-22中,我们使用了using来定义类型的别名,这跟使用typedef的定义类型的别名是完全一样的。这里,按照封装的思想,所有成员变量被声明为private的。在c++11之前,声明一个类和另外一个类的友元时,是需要使用class关键字的,但在c++11中是不需要的。原创 2022-10-20 11:58:00 · 155 阅读 · 0 评论 -
c++模板
+。很多时候,由于程序员低估了模板实例化展开的开销,因此大量的模板使用会在代码中产生大量的余。这种余,有的时候已经使得编译器和链接器力不从心。++原创 2022-10-20 11:31:04 · 776 阅读 · 0 评论 -
final/override 控制
Printable则是继承了基类,并只实现了Print,然后Add2和Mul3又继承了Printable,但是在Add2和Mul3中也是可以重写Print的,但是如果Printable和Add2是两个不同的人员编写,这个时候如果Add2的编写者重写了Print吗,那么Printable编写者期望的打印风格将会改变,所以这个时候final就能派上用场,在函数后面加上该关键字就可以禁止该函数的重写。但出于安全考虑,建议读者在C++11代码中应该尽可能地避免这样的变量名称或将其定义在宏中,以防发生不必要的错误。原创 2022-10-20 11:28:36 · 246 阅读 · 0 评论 -
就地初始化与列表初始化
C++11 支持了就地初始化非静态数据成员的同时,初始化列表的方式也被保留下来,也就是说既可以使用就地初始化,也可以使用初始化列表来完成数据成员的初始化工作。当二者同时使用时并不冲突,初始化列表发生在就地初始化之后,即最终的初始化结果以初始化列表为准。从C++11开始,对列表初始化(List Initialization)的功能进行了扩充,可以作用于任何类型对象的初始化,至此,列表初始化方式完成了天下大一统。可以将 C++11 的列表初始化作为统一的初始化方式,既降低了记忆难度,也提高的代码的统一度。原创 2022-10-20 11:10:30 · 400 阅读 · 1 评论 -
noexcept 修饰符
1.当noexcept是标识符时, 它的作用是在函数后面声明一个函数是否会抛出异常.2.当noexcept是函数时, 它的作用是检查一个函数是否会抛出异常.原创 2022-10-20 11:07:43 · 593 阅读 · 0 评论 -
assert 断言
由于extern"C"可以抑制C++对函数名、变量名等符号(symbol)进行名称重整(namemangling) ,因此编译出的C目标文件和C++目标文件中的变量、函数名称等符号都是相同的(否则不相同),链接器可以可靠地对两种类型的目标文件进行链接。结果如我们预期的,在模板实例化时我们会得到编译器的错误报告,在我们的实验机上会输出比较长的错误信息,主要信息是除零错误。有的时候,我们希望在编译时能做一些断言。表达式的结果必须是在编译期间可以计算的表达式,也就是说是常量表达式,如果使用了变量,则会导致错误。原创 2022-10-20 10:04:21 · 307 阅读 · 0 评论 -
C++11 学习之路
最近开始学习c++ 11,那就从读书开始吧.原创 2022-10-20 09:59:08 · 109 阅读 · 2 评论