-
读书笔记 effective c++ Item 22 将数据成员声明成private
我们首先看一下为什么数据成员不应该是public的,然后我们将会看到应用在public数据成员上的论证同样适用于protected成员。最后够得出结论:数据成员应该是private的。1. 为什么数据成员不能是public的?为什么数据成员不能够是public的?2.1 一致性让我们从句法的一致性开始(Item 18)。如果数据成员不...
作者:小编 日期:2026.06.22 分类:算法 833 -
读书笔记 effective c++ Item 21 当你必须返回一个对象的时候,不要尝试返回引用
1. 问题的提出:要求函数返回对象时,可以返回引用么?一旦程序员理解了按值传递有可能存在效率问题之后(Item 20),许多人都成了十字军战士,决心清除所有隐藏的按值传递所引起的开销。对纯净的按引用传递(不需要额外的构造或者析构)的追求丝毫没有懈怠,但他们的始终如一会产生致命的错误:它们开始传递指向并不存在的对象的引用。这可不是好事情...
作者:小编 日期:2026.06.22 分类:语言 460 -
读书笔记 effctive c++ Item 20 优先使用按const-引用传递(by-reference-to-const)而不是按值传递(by value)
1. 按值传递参数会有效率问题默认情况下,C++向函数传入或者从函数传出对象都是按值传递(pass by value)(从C继承过来的典型特性)。除非你指定其他方式,函数参数会用实际参数值的拷贝进行初始化,函数调用者会获得函数返回值的一份拷贝。这些拷贝由对象的拷贝构造函数生成。这使得按值传递(pass-by-value)变成一项昂贵的...
作者:小编 日期:2026.06.22 分类:手册 1447 -
Linux系统研究 - 操作系统是如何管理tcp连接的 (2)
接上一篇文章 Linux系统研究 - 操作系统是如何管理tcp连接的 (1),我们再来继续讲。客户端第一步要做的事就是连接服务器,所以我们看下对应的connect方法:// net/ipv4/inet_hashtables.c int __inet_hash_connect(struct inet_timewait_death_row *death_row, struct sock *sk, u32 port_offset,...
作者:小编 日期:2026.06.22 分类:类库 1955 -
读书笔记 effective c++ Item 19 像设计类型(type)一样设计类
1. 你需要重视类的设计c++同其他面向对象编程语言一样,定义了一个新的类就相当于定义了一个新的类型(type),因此作为一个c++开发人员,大量时间会被花费在扩张你的类型系统上面。这意味着你不仅仅是一个类的设计者同时是一个类型设计者。重载函数和运算符,控制内存分配和释放,定义对象初始化和终结,这些都是你需要考虑的。因此你应该同语言设...
作者:小编 日期:2026.06.22 分类:文档 1343 -
读书笔记 effective c++ Item 18 使接口容易被正确使用,不容易被误用
1. 什么样的接口才是好的接口C++中充斥着接口:函数接口,类接口,模板接口。每个接口都是客户同你的代码进行交互的一种方法。假设你正在面对的是一些“讲道理”的人员,这些客户尝试把工作做好,他们希望能够正确使用你的接口。在这种情况下,如果接口被误用,你的接口应该至少负一部分的责任。理想情况下,如果使用一个接口没有做到客户希望做到的,代码...
作者:小编 日期:2026.06.22 分类:语言 1701 -
读书笔记 effective c++ Item 17 使用单独语句将new出来的对象放入智能指针
1. 可能会出现资源泄漏的一种用法假设我们有一个获取进程优先权的函数,还有一个在动态分配的Widget对象上根据进程优先权进行一些操作的函数:1 int priority();2 3 void processWidget(std::tr1::shared_ptr<Widget> pw, int priority);注意这里...
作者:小编 日期:2026.06.22 分类:工具 1302 -
Git示例教程 - 灵活使用git diff命令
相关命令:# 比较当前工作区和Git的staging area里内容的区别 git diff # 比较Git的staging area和当前分支指向内容的区别 git diff --staged # 比较任意两次提交指向内容的区别 git diff <commit> <commit>情景模拟:先执行下面的命令,创建一个测试用的Git仓库:# 创建一个空的Git仓库 mkdir repo cd repo git init # 提交一次 echo a...
作者:小编 日期:2026.06.22 分类:工具 1508 -
读书笔记 effective c++ Item 16 成对使用new和delete时要用相同的形式
1. 一个错误释放内存的例子下面的场景会有什么错?1 std::string *stringArray = new std::string[100];2 3 ...4 5 delete stringArray 一切看上去都是有序的。new匹配了一个delete。但有一些地方确实是错了。程序的行为是未定义的。至少来说,stringArr...
作者:小编 日期:2026.06.22 分类:类库 1830 -
读书笔记 effective c++ Item 15 在资源管理类中提供对原生(raw)资源的访问
1.为什么需要访问资源管理类中的原生资源 资源管理类是很奇妙的。它们是防止资源泄漏的堡垒,没有资源泄漏发生是设计良好的系统的一个基本特征。在一个完美的世界中,你需要依赖这样的类来同资源进行交互,绝不要直接访问原生(raw)资源而玷污你的双手。但是世界不是完美的,许多API会直接引用资源,所以除非你放弃使用这样的API(这是不实际的想法...
作者:小编 日期:2026.06.22 分类:教程 556








