effective c++
哞哞哞咩咩咩
记录日常学习
展开
-
more effective cpp
条款5 class Rational { int a; int b; public: operator double() const { return a / b; }; //隐式类型转换操作符 Rational(int a = 1, int b = 2) :a(a), b(b) {}; }; int main() { Rational r(3, 2); cout << r << endl; //转为double输出 cout << r原创 2020-09-17 19:26:43 · 96 阅读 · 0 评论 -
effective cpp小结条款21~40
条款21 在栈上创建对象 const Rational& operartor* (const Rational& lhs, const Rational& rhs) { Rational result(lhs.n * rhs.n, lhs.d * rhs.d); return result;//错误代码! } result是个local对象,在函数退出前就被销毁了 在堆上创建对象 const Rational& operartor* (const Rational&am原创 2020-09-07 21:49:00 · 138 阅读 · 0 评论 -
effective cpp小结条款1~20
条款2 #define具有全局性,出来的是宏,它是预处理的东西,预处理后的编译阶段已经不存在,所以不可能获取宏的地址。 enum,非全局,内元素也不能取地址(右值),因为常量存放在内存里的位置没有"地址"这个概念,所以不能取地址 #include<iostream> using namespace std; void fun() { #define AAA 222 }; class A{ #define BBB 333//不能用来定义class专属变量,不具有封装性 public: #原创 2020-08-24 21:35:04 · 239 阅读 · 0 评论 -
effective cpp小结条款41~55
条款41 编译期多态和运行期多态 显示接口和隐式接口 显示接口是由函数的签名式(也就是函数名称,参数类型,返回类型)构成。 如下,就是一个显示接口,我们了解到函数的参数,返回类型,名称等。 string fun(int i); 而对于隐式接口,就不同了,它不基于函数签名式,而是由有效的表达式来组成。 如下: template<typename T> void process(T& w) { if(w.size()>10) { ....原创 2020-09-05 12:11:56 · 93 阅读 · 0 评论