条款10 防止构造函数里的资源泄露条款20 协助编译器实现返回值优化条款22 考虑使用op=来取代单独的op运算符条款26 限制类对象的个数条款27 要求或禁止对象分配在堆上
转载 2015-11-15 13:49:00
108阅读
2评论
强制性:异常不能被忽略,这与传统的错误代码不同,后者可能被忽略。安全性:异常确保了错误状态被正确处理,而非让
在继承层次中,如果基类 Animal 有赋值操作符 operator=,而派生类 Lizard 和 Chicken 也有各自的赋值操作符,通过基类
原创 11月前
88阅读
虚拟构造函数并不是一个真正意义上的构造函数,而是一个设计模式。这种模式允许根据输入数据动态创建不同子类的对象。通常,这种
c++
c++
原创 2021-06-01 09:15:03
1306阅读
指针定义:指针是一个变量,它存储的是另一个变量的内存地址。语法:通过*操作符来定义,并且可以通过->操作符来访问成员。灵活性:指针可以在任
如果 field1Value 为 nullptr,表示 field1 尚未从数据库中读取,此时调用 fetchFromDatabase 方法从数据库中读取符引用。
原创 11月前
39阅读
避免临时对象:operator+ 和 operator- 通过创建临时对象来调用 operator+= 和 operator-=,但这仍然是一个高效的数上进行操作,不需要创建临时对象。
原创 11月前
51阅读
一本需要反复阅读的书
原创 2021-07-23 17:02:03
371阅读
基础议题条款1:仔细区别pointers和references首先你必须认知一点,没有所谓的 null reference。由于reference一定得代表某个对象,C++因此要求references必须有初值。Pointers和references之间的另一个重要差异就是,pointers可以被重新赋值,指向另一个对象,reference却总是指向(代表)它最初获得的那个对象。结论:当你知道你需
转载 2021-02-01 10:50:53
364阅读
2评论
人们有时好像喜欢故意使C 语言的术语难以理解。比如说new操作符(new operator)和operator new的区别。   当你写这样的代码:string *ps = new string("Memory Management");
原创 2023-08-09 11:07:04
77阅读
具体来说,当我们尝试比较数组a和数组b的一个元素b[5]时,如果写成了a == b[5],编译器可能会尝试将b[5](一个int)隐式转换
原创 11月前
47阅读
4 技巧 ~~~~~~~ 4.1 如何将构造函数和非成员函数虚拟化 =====================================    1. 虚拟构造函数是指能够根据输入给它的数据的不同而建立不同类型的对象的成员函数(不是构造函数!!).    2. 虚拟拷贝构造函数返回一个指针,指向调用该函数的对象的新拷贝.因此其名字通常为
原创 2013-03-26 07:35:51
681阅读
条款20 协助编译器实现返回值优化 当重载运算符的时候,比如+ - * / 这类运算符,该函数返回的值一定是个右值(即不能是引用),那么执行一次运算的开销可能会在临时对象上调用多次构造函数和析构函数,这笔开销还是很大的。现在的新编译器已经可以对这种情况进行优化了,甚至优化到连开销都没有,只是有...
转载 2015-11-16 18:36:00
125阅读
2评论
1 基础 ~~~~~~~ 1.1 指针和引用区别 ===================    1. 指针可以指向空值,引用不能指向空值    2. 指针定义时可以不初始化,引用定义时必须初始化    3. 指针可以被重新赋值指向另一个对象,而引用在初始化时被指定的对象,以后不能改变,但它和本体的值会因赋值而改变 &
原创 2013-03-26 07:31:59
762阅读
3 异常 ~~~~~~~ 3.1 防止构造函数在存在异常时发生资源泄露 =========================================    1. 如果你用对应的auto_ptr对象替代指针成员变量,就可以防止构造函数在存在异常时发生资源泄漏,你也不用手工在析构函数中释放资源,并且你还能象以前使用非const指针一样使用const指针,给其赋
原创 2013-03-26 07:34:18
711阅读
5 其他杂项 ~~~~~~~~~~~ 5.1 在未来时态下开发程序 =========================    1. 用C++语言自己来表达设计上的约束条件,而不是用注释或文档    2. 未来时态的考虑不是问一个类现在正被怎么使用,而是问这个类是被设计为怎么去使用的.    3. 未来时态的考虑只是简单
原创 2013-03-26 07:36:40
691阅读
Proxy classes allow you to achieve some types of behavior that are otherwise difficult or impossible to implement. Multidimensional arrays are one example, lvalue/rvalue differentiation is a second, suppression of implicit conversions (see Item 5) is a third. At the same time, proxy classes hav...
转载 2012-03-20 13:01:00
105阅读
2评论
TBD
转载 2012-03-16 13:02:00
157阅读
2评论
When you use smart pointers in place of C++'s built-in pointers (i.e., dumb pointers), you gain control over the following aspects of pointer behavior:Construction and destruction. You determine what happens when a smart pointer is created and destroyed. It is common to give smart pointers a def
转载 2012-03-15 14:33:00
280阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5