effective c++
文章平均质量分 79
back2childhood
cpp/java/macos
展开
-
effective c++ item40-44
在标准库中,basic istream和basic ostream库都是虚继承自basic ios的类,而basic iostream又继承自basic istream和basic ostream。不论T是什么类型,其中必须要有size、normalize、swap、!class不能替代typename,但是typename可以替代class。在编译期做类型推导,得到T的类型。使用虚函数可以实现运行期的多态。虚继承成本高,要维护基类。解决了多重继承的问题。原创 2023-05-02 22:16:04 · 748 阅读 · 0 评论 -
effective c++ item35-39
见https://blog.csdn.net/weixin_44609676/article/details/130382495可以看到,b和pb调用的是同一个虚方法,但是输出到结果却不一样。因为f是虚函数,在运行时才动态绑定需要执行的函数,但是参数却是静态绑定的,在编译期pb的参数就已经是1了。即使把BC的默认参数都换成1,也不推荐这样做。原创 2023-04-26 23:30:54 · 374 阅读 · 0 评论 -
effective c++ item30-34
类的空的构造函数不一定就被内联,因为构造函数中要调用基类的构造函数、成员变量的构造函数等,如果都要内联会导致代码过多。用inline修饰函数可以防止multiple definition的错误。有利于用来做版本控制。原创 2023-04-24 00:51:28 · 128 阅读 · 0 评论 -
effective c++ item 25-29
effective c++原创 2023-04-05 22:12:08 · 333 阅读 · 1 评论 -
Effective c++item 19-24
/ a为局部变量,返回了一个无效地址// tworeturn *a;// 可能会造成内存泄漏// aka a = (b * c) * d, (b*c)的结果没有被保存下来A a(1, 8);A b(1, 2);// error!!!c = 2 * a;A a(1, 2);A b;b = a * 2;// 2 6。原创 2023-03-28 22:59:57 · 85 阅读 · 1 评论 -
effective c++条款13-18
如果abc都是整形,上面的语句将会报错;但是如果是自定义的类型,a * b将会返回一个值,如果这个值没有用const修饰,这个句子反而合法。原创 2023-03-26 15:57:02 · 50 阅读 · 1 评论 -
Effective c++条款9-12
可以看到,derived1 = derived的操作,并没有将derived的name赋值给derived1;derived2 = derived也是同样。在基类的构造函数中调用虚函数,子类重写虚函数,构造子类是调用的函数仍是基类的函数。因为在构造子类时先调用基类的构造函数,而这时子类还没构造,也就不存在成员函数。如果要实现以上需求,可以将子类的值传递给基类。如果我们要实现连等,应该这样改。原创 2023-03-26 01:06:24 · 50 阅读 · 1 评论 -
effective c++条款4-8
1、在c++98里,是将不想要的函数(如拷贝赋值,拷贝构造等)声明为私有函数,但是这样在他的成员函数和友元函数中仍然是可以调用的。或者可以定义一个uncopyable的类,然后不需要拷贝构造的类继承该类,这样该类也不可以复制了。注意⚠️在上面的类的成员中因为name是引用类型、intValue是const类型,所以上面的赋值语句是无法执行的:即移动赋值和拷贝赋值语句。1、为多台基类声明virtual析构函数,使子类在析构时调用自己的函数。c++会自动给类生成移动构造、拷贝构造、移动赋值、拷贝赋值等函数。原创 2023-03-25 21:50:34 · 62 阅读 · 1 评论 -
effective c++阅读笔记
effective c++原创 2023-03-16 10:39:13 · 84 阅读 · 2 评论