Fork me on GitHub
上一页 1 ··· 6 7 8 9 10 11 12 13 下一页
摘要: 1. 按值传递参数会有效率问题 默认情况下,C++向函数传入或者从函数传出对象都是按值传递(pass by value)(从C继承过来的典型特性)。除非你指定其他方式,函数参数会用实际参数值的拷贝进行初始化,函数调用者会获得函数返回值的一份拷贝。这些拷贝由对象的拷贝构造函数生成。这使得按值传递(pa 阅读全文
posted @ 2017-02-25 07:53 HarlanC 阅读(930) 评论(1) 推荐(0) 编辑
摘要: 1. 你需要重视类的设计 c++同其他面向对象编程语言一样,定义了一个新的类就相当于定义了一个新的类型(type),因此作为一个c++开发人员,大量时间会被花费在扩张你的类型系统上面。这意味着你不仅仅是一个类的设计者同时是一个类型设计者。重载函数和运算符,控制内存分配和释放,定义对象初始化和终结,这 阅读全文
posted @ 2017-02-24 07:51 HarlanC 阅读(700) 评论(2) 推荐(0) 编辑
摘要: 1. 什么样的接口才是好的接口 C++中充斥着接口:函数接口,类接口,模板接口。每个接口都是客户同你的代码进行交互的一种方法。假设你正在面对的是一些“讲道理”的人员,这些客户尝试把工作做好,他们希望能够正确使用你的接口。在这种情况下,如果接口被误用,你的接口应该至少负一部分的责任。理想情况下,如果使 阅读全文
posted @ 2017-02-23 08:00 HarlanC 阅读(989) 评论(0) 推荐(0) 编辑
摘要: 1. 可能会出现资源泄漏的一种用法 假设我们有一个获取进程优先权的函数,还有一个在动态分配的Widget对象上根据进程优先权进行一些操作的函数: 注意这里使用了对象管理资源的用法(Item 13),processWidget为它需要处理的动态分配对象Widget使用了智能指针(tr1::shared 阅读全文
posted @ 2017-02-22 08:05 HarlanC 阅读(845) 评论(0) 推荐(1) 编辑
摘要: 1. 一个错误释放内存的例子 下面的场景会有什么错? 一切看上去都是有序的。new匹配了一个delete。但有一些地方确实是错了。程序的行为是未定义的。至少来说,stringArray指向的100个string对象中的99个看上去都不能被正确释放,因为他们的析构函数可能永远不会被调用。 2. 使用n 阅读全文
posted @ 2017-02-21 08:05 HarlanC 阅读(1019) 评论(0) 推荐(0) 编辑
摘要: 1.为什么需要访问资源管理类中的原生资源 资源管理类是很奇妙的。它们是防止资源泄漏的堡垒,没有资源泄漏发生是设计良好的系统的一个基本特征。在一个完美的世界中,你需要依赖这样的类来同资源进行交互,绝不要直接访问原生(raw)资源而玷污你的双手。但是世界不是完美的,许多API会直接引用资源,所以除非你放 阅读全文
posted @ 2017-02-20 07:20 HarlanC 阅读(626) 评论(1) 推荐(0) 编辑
摘要: 1. 自己实现一个资源管理类 Item 13中介绍了 “资源获取之时也是初始化之时(RAII)”的概念,这个概念被当作资源管理类的“脊柱“,也描述了auto_ptr和tr1::shared_ptr是如何用堆资源来表现这个概念的。然而并不是所有资源都是在堆上创建的,对于这种资源,像auto_ptr和t 阅读全文
posted @ 2017-02-19 09:32 HarlanC 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 1.不要手动释放从函数返回的堆资源 假设你正在处理一个模拟Investment的程序库,不同的Investmetn类型从Investment基类继承而来, 进一步假设这个程序库通过一个工厂函数(Item 7)来给我们提供特定Investment对象: 正如注释所表述的,当createInvesmen 阅读全文
posted @ 2017-02-18 07:56 HarlanC 阅读(883) 评论(0) 推荐(0) 编辑
摘要: 1.默认构造函数介绍 在设计良好的面向对象系统中,会将对象的内部进行封装,只有两个函数可以拷贝对象:拷贝构造函数和拷贝赋值运算符。我们把这两个函数统一叫做拷贝函数。从Item5中,我们得知,如果需要的话编译器会为你生成这两个拷贝函数,并且编译器生成的版本能够精确的做到你想做的:它们拷贝了对象的所有数 阅读全文
posted @ 2017-02-17 07:42 HarlanC 阅读(713) 评论(1) 推荐(0) 编辑
摘要: 1.自我赋值是如何发生的 当一个对象委派给自己的时候,自我赋值就会发生: 这看上去是愚蠢的,但这是合法的,所以请放心,客户端是可以这么做的。此外,自身赋值也并不总是很容易的能够被辨别出来。举个例子: 上面的代码在i和j相等的情况下就是自我赋值,同样的,看下面的例子: 如果px和py恰巧指向同一个东西 阅读全文
posted @ 2017-02-15 23:48 HarlanC 阅读(802) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 下一页