高速上手C++11 14 笔记1
程序员文章站
2022-05-04 13:26:13
1 constexpr constexpr关键字可以让已经具备常量返回的函数运用于常量的位置。 c++14起可以在函数内部使用局部变量、循环和分支等简单语句。 2 委托构造&继承构造 委托构造使得避免了多个构造函数调用一个私有函数的丑陋代码。 class Base { public: int val ......
1 constexpr
constexpr关键字可以让已经具备常量返回的函数运用于常量的位置。
c++14起可以在函数内部使用局部变量、循环和分支等简单语句。
2 委托构造&继承构造
委托构造使得避免了多个构造函数调用一个私有函数的丑陋代码。
class Base { public: int value1; int value2; Base() { value1 = 1; } Base(int value) : Base() { // deletgate constructor value2 = 2; } };
继承构造解决了子类调用父类构造函数时依次传入变量效率低下的问题。
class Subclass : public Base { public: using Base::Base; // Inheriting constructor };
由此传参效率问题目前已有一下解决方案:
1、构造函数的继承构造
2、inline或macro的代码替换
3、移动语义、完美转发。(move强制转化为rvalue,forward保留原值的左右属性)
显式虚函数重载(final&override)
struct Base { virtual void foo(); }; struct SubClass : public Base { void foo(); };
以上代码中,subclass的foo方法语义模糊,当base类不得不移除foo方法时subclass的foo依然能够运作,这是非常严重的后果。
struct Base { virtual void foo(int); virtual void foo2() final; }; struct SubClass : public Base { virtual void foo(int) override; virtual void foo(double) override; // ERR void foo2(); // ERR };
拒绝编译器做小动作(default&delete)
class Magic { public: Magic() = default; // explicit constructor Magic& operator=(const Magic&) = delete; // explicit refuse = operator Magic(int magic_number); };
上一篇: 云计算创造无限便捷与商机
推荐阅读
-
全球首款!联想ThinkPad X1折叠屏笔记本原型上手:4:3屏幕爽翻
-
高速上手C++11 14 笔记1
-
(C++11/14/17学习笔记):lambda表达式的使用
-
联想YOGA Pro 14s Carbon笔记本发布:2.8K 90Hz高刷屏、轻至1千克
-
RedmiBook 14锐龙版值得买吗 RedmiBook 14锐龙版笔记本上手体验评测
-
荣耀MagicBookV14和ThinkPadX1哪款好 两款笔记本对比
-
首款Intel雅典娜计划笔记本:宏碁2019款Swift 14快速上手
-
惠普星14值得买吗 惠普星14笔记本上手体验及评测
-
完整开发流程管理提升与系统需求分析过程 随堂笔记(day 1) 【2019/10/14】
-
MySql官方手册学习笔记1 MySql简单上手_MySQL