Effective C++ 读书笔记 Item48 了解模板元编程

热文Effective C++ 读书笔记 Item48 了解模板元编程

模板元编程(Template Metaprogramming,TMP)就是利用模板来编写那些在编译时运行的C++程序。 模板元程序(Template Metaprogra...

朱雀朱雀/ 2020年07月07日 14:47/ 0 赞/ 1205 阅读
Effective C++ 读书笔记 Item44 将与参数无关的代码抽离 templates

热文Effective C++ 读书笔记 Item44 将与参数无关的代码抽离 templates

模板是个好东西,你可以在实现类型安全的同时少写很多代码。但模板提供的是编译期的多态, 即使你的代码看起来非常简洁短小,生成的二进制文件也可能包含大量的冗余代码。 因为模板...

朱雀朱雀/ 2020年07月07日 14:47/ 0 赞/ 803 阅读
Effective C++ 读书笔记 Item43 访问模板基类中的名称

热文Effective C++ 读书笔记 Item43 访问模板基类中的名称

从面向对象C++转移到模板C++时,你会发现类继承在某些场合不在好使了。 比如父类模板中的名称对子类模板不是直接可见的,需要通过this->前缀、using或显式地特化模...

朱雀朱雀/ 2020年07月05日 04:58/ 0 赞/ 886 阅读
Effective C++ 读书笔记 Item42 typename的两种用法

热文Effective C++ 读书笔记 Item42 typename的两种用法

时至今日还有人在论坛里问模板参数前的typename和class有何区别: template<typename T> class Widget; template<cl...

朱雀朱雀/ 2020年07月05日 04:58/ 0 赞/ 964 阅读
Effective C++ 读书笔记 Item41 了解隐式接口和编译器多态

热文Effective C++ 读书笔记 Item41 了解隐式接口和编译器多态

面向对象设计中的类(class)考虑的是显式接口(explicit interface)和运行时多态, 而模板编程中的模板(template)考虑的是隐式接口(impli...

朱雀朱雀/ 2020年07月05日 04:58/ 0 赞/ 784 阅读
Effective C++ 读书笔记 Item40 明智而审慎地使用多重继承

热文Effective C++ 读书笔记 Item40 明智而审慎地使用多重继承

使用多继承时, 一个问题是不同基类可能具有相同名称,产生歧义(即使一个名字可访问,另一个不可访问) 多继承(Multiple Inheritance,MI)是C++特有的...

朱雀朱雀/ 2020年07月05日 04:57/ 0 赞/ 847 阅读
Effective C++ 读书笔记 Item39 明智而审慎地使用 private 继承

热文Effective C++ 读书笔记 Item39 明智而审慎地使用 private 继承

I][]tem 32提出public继承表示"is-a"的关系,这是因为编译器会在需要的时候将子类对象隐式转换为父类对象。 然而private继承则不然: cl...

朱雀朱雀/ 2020年07月05日 04:53/ 0 赞/ 898 阅读
Effective C++ 读书笔记 Item38 通过组合表示"拥有"或"以...实现"的关系

热文Effective C++ 读书笔记 Item38 通过组合表示"拥有"或"以...实现"的关系

一个类型包含另一个类型的对象时,我们这两个类型之间是组合关系。组合是比继承更加灵活的软件复用方法。 Item 32提到public继承的语义是”is-a”的关系。对象组合...

朱雀朱雀/ 2020年07月05日 04:52/ 0 赞/ 656 阅读
Effective C++ 读书笔记 Item37 绝不重新定义继承而来的缺省参数值

热文Effective C++ 读书笔记 Item37 绝不重新定义继承而来的缺省参数值

不要重写父类函数的默认参数。Item 36已经说明子类中不应该重写继承而来的父类的非虚函数。 那么本文讨论的内容其实是:不要重定义虚函数的默认参数。为什么呢? 因为虽然虚...

朱雀朱雀/ 2020年07月05日 02:37/ 0 赞/ 864 阅读
Effective C++ 读书笔记 Item36 绝不重新定义继承而来的 non-virtual 函数

热文Effective C++ 读书笔记 Item36 绝不重新定义继承而来的 non-virtual 函数

从规范上说, 条款 34 提到,如果某个操作在整个继承体系应该是不变的,那么使用 non-virtual 函数,此时派生类从基类继承接口以及一份强制实现。如果派生类希望表...

朱雀朱雀/ 2020年07月05日 02:36/ 0 赞/ 861 阅读
Effective C++ 读书笔记 Item35 考虑 virtual 函数以外的其他选择

热文Effective C++ 读书笔记 Item35 考虑 virtual 函数以外的其他选择

比如你在开发一个游戏,每个角色都有一个healthValue()方法。很显然你应该把它声明为虚函数,可以提供默认的实现,让子类去自定义它。 这个设计方式太显然了你都不会考...

朱雀朱雀/ 2020年07月05日 02:35/ 0 赞/ 889 阅读
Effective C++ 读书笔记 Item34 区分接口继承和实现继承

热文Effective C++ 读书笔记 Item34 区分接口继承和实现继承

不同于Objective C或者Java,C++中的继承接口和实现继承是同一个语法过程。 当你public继承一个类时,接口是一定会被继承的(见Item32),你可以选择...

朱雀朱雀/ 2020年07月05日 02:34/ 0 赞/ 911 阅读
Effective C++ 读书笔记 Item33 避免隐藏继承来的名称(继承与作用域嵌套)

热文Effective C++ 读书笔记 Item33 避免隐藏继承来的名称(继承与作用域嵌套)

其实本文的话题和继承完全没有关系,隐藏名称是作用域的问题。 在C++中每一对{ }都会开启一个新的作用域,并嵌套在当前作用域中。 一个示例 int x; void fun...

朱雀朱雀/ 2020年07月05日 02:33/ 0 赞/ 878 阅读
Effective C++ 读书笔记 Item32 确保public继承是"is a"的关系

热文Effective C++ 读书笔记 Item32 确保public继承是"is a"的关系

C++面向对象程序设计中,最重要的规则便是:public继承应当是”is-a”的关系。当Derived public继承自Base时, 相当于你告诉编译器和所有看到你代码...

朱雀朱雀/ 2020年07月05日 02:32/ 1 赞/ 849 阅读
Effective C++ 读书笔记 Item31 将文件间的编译依存关系将至最低

热文Effective C++ 读书笔记 Item31 将文件间的编译依存关系将至最低

假设某一天你打开自己的C++程序代码,然后对某个类的实现做了小小的改动。提醒你,改动的不是接口,而是类的实现,也就是说,只是细节部分。然后你准备重新生成程序,心想,编译和...

朱雀朱雀/ 2020年07月05日 02:31/ 0 赞/ 806 阅读
Effective C++ 读书笔记 Item30 透彻了解 inlining 的里里外外

热文Effective C++ 读书笔记 Item30 透彻了解 inlining 的里里外外

inline(内联)函数的好处太多了:它没有宏的那些缺点,见Item 2:避免使用define;而且不需要付出函数调用的代价。 同时也方便了编译器基于上下文的优化。但in...

朱雀朱雀/ 2020年07月05日 02:31/ 0 赞/ 931 阅读
Effective C++ 读书笔记 Item29 追求异常安全的代码

热文Effective C++ 读书笔记 Item29 追求异常安全的代码

1)异常安全的 2 个条件 异常安全有 2 个条件: 不泄露任何资源:即发生异常时,异常发生之前获得的资源都应该释放,不会因为异常而泄露。在 上面的例子中,如果 new...

朱雀朱雀/ 2020年07月05日 02:30/ 0 赞/ 1117 阅读
Effective C++ 读书笔记 Item28 不要返回对象内部的句柄

热文Effective C++ 读书笔记 Item28 不要返回对象内部的句柄

不要返回对象私有成员的句柄。这里的“句柄”(handle)包括引用、指针和迭代器。 这样可以增加类的封装性、使得const函数更加const, 也避免了空引用的创建(da...

朱雀朱雀/ 2020年07月05日 02:29/ 0 赞/ 888 阅读
Effective C++ 读书笔记 Item27 尽量少做转型(类型转换)动作

热文Effective C++ 读书笔记 Item27 尽量少做转型(类型转换)动作

C++的类型检查只在编译时执行,运行时没有类型错误的概念。 理论上讲只要你的代码可以编译那么就运行时就不会有不安全的操作发生。 但C++允许类型转换,也正是类型转换破坏了...

朱雀朱雀/ 2020年07月05日 02:29/ 0 赞/ 857 阅读
Effective C++ 读书笔记 Item26 为什么要推迟变量的定义?

热文Effective C++ 读书笔记 Item26 为什么要推迟变量的定义?

这一规则在任何编程语言中都适用,一方面可以避免无用的构造使得程序更高效,另一方面作用域的缩小会使程序更加清晰。 存在控制流转移的代码中,你可能会不经意间定义无用的变量。例...

朱雀朱雀/ 2020年07月05日 02:28/ 0 赞/ 968 阅读
Effective C++ 读书笔记 Item25 考虑实现一个不抛异常的swap

热文Effective C++ 读书笔记 Item25 考虑实现一个不抛异常的swap

我们可以调用std下的swap函数,这是一个模板函数:既可以: int a = 1; int b = 2; std::swap(a,b); cou...

朱雀朱雀/ 2020年07月05日 02:28/ 0 赞/ 901 阅读
Effective C++ 读书笔记 Item47 使用Traits类提供类型信息

热文Effective C++ 读书笔记 Item47 使用Traits类提供类型信息

C++中的 Traits 类可以在编译期提供类型信息,它是用Traits模板及其特化来实现的。 通过方法的重载,可以在编译期对类型进行”if…else”判断。我们通过ST...

朱雀朱雀/ 2020年07月05日 02:26/ 1 赞/ 999 阅读
Effective C++ 读书笔记 Item46 需要类型转换时,应当在类模板中定义非成员函数

热文Effective C++ 读书笔记 Item46 需要类型转换时,应当在类模板中定义非成员函数

Item 24中提到,如果所有参数都需要隐式类型转换,该函数应当声明为非成员函数。Item 24是以Rational和operator*为例子展开的,本文把这个观点推广到...

朱雀朱雀/ 2020年07月05日 02:25/ 0 赞/ 1006 阅读
Effective C++ 读书笔记 Item45 运用成员函数模板接受所有兼容类型

热文Effective C++ 读书笔记 Item45 运用成员函数模板接受所有兼容类型

I][]tem 13提到智能指针可用来自动释放堆中的内存,STL中的迭代器也是一种智能指针,它甚至支持链表元素指针的`++`操作。 这些高级特性是普通指针所没有的。本文以...

朱雀朱雀/ 2020年07月05日 02:24/ 0 赞/ 985 阅读
  • 首页
  • 上一页
  • 682
  • 683
  • 684
  • 685
  • 下一页
  • 共 686 页