2017年9月5日

Effective C++ 条款13

摘要: 以对象管理资源 Use objects to manage resources 正常情况下,我们都是通过delete p 这种方式来管理资源,比如指针。内存只是资源的一种,还有文件描述器,互斥锁,数据库链接,socket等。这种通过delete 的方式来释放资源没有错误,但是如果代码逻辑复杂,且在d 阅读全文

posted @ 2017-09-05 15:37 ^~~^ 阅读(129) 评论(0) 推荐(0) 编辑

Effective C++ 条款12

摘要: 复制对象时勿忘其每一个成分 Copy all parts of an object 如果我们自己写了拷贝构造函数,那么编译器不会为我们生成默认的拷贝构造函数,即使我们的代码不完全,编译器也不会告诉我们。所以如果有新增加的成员变量,我们必须同时修改拷贝构造函数。 如果遇到继承的情况,那么我们还需要调用 阅读全文

posted @ 2017-09-05 15:07 ^~~^ 阅读(130) 评论(0) 推荐(0) 编辑

2017年8月31日

Effective C++ 条款11

摘要: 在operator= 中处理自我赋值. Handle assignment to self in operator= 在赋值操作符的实现中,我们需要留意自我赋值的情况,看起来很傻,但其实很多情况下,我们无法很直观的判断赋值对象和this 是否为一个对象。特别是在有多态的情况下。 因此,我们一般会在操 阅读全文

posted @ 2017-08-31 16:32 ^~~^ 阅读(107) 评论(0) 推荐(0) 编辑

2017年8月30日

Effective C++ 条款10

摘要: 令operator= 返回一个reference to *this. Have assignment operators return a reference to *this. 赋值时,我们可以写成如下形式: int x,y,z; x=y=z=10; 这种连锁方式采用右结合方式,也就是 x=(y= 阅读全文

posted @ 2017-08-30 14:01 ^~~^ 阅读(85) 评论(0) 推荐(0) 编辑

Effective C++ 条款09

摘要: 绝不在构造/析构函数中调用virtual函数。 Never call virtual functions during construction and destruction. 在构造/析构函数中调用virtual函数,会导致链接失败,因为这里编译器不会执行多态操作,将虚函数调用传递到derive 阅读全文

posted @ 2017-08-30 13:46 ^~~^ 阅读(100) 评论(0) 推荐(0) 编辑

Effective C++ 条款08

摘要: 别让异常逃离析构函数 Prevent exceptions from leaving destructors 析构函数绝对不要抛出异常,如果一个被析构函数调用的函数可能抛出异常,那么析构函数应该处理这个异常并且不能抛出。 这里的理解是,如果一个析构函数抛出异常,会导致当前对象处于未定义状态或者导致程 阅读全文

posted @ 2017-08-30 13:42 ^~~^ 阅读(91) 评论(0) 推荐(0) 编辑

2017年8月29日

某外企C++面试题

摘要: 我见过一个外企C++面试题,我当时也没做出来,经过这几天思考,有了点思路,现在给大家分享。注意,原题是英文的。 题目:给一个文本文件,该文件中包含一篇文章,要求写代码统计出里面长度最长的10个单词,并且记录打印出该单词所在的段落以及内容。 我刚看到题目的时候,认为这是一个词频统计的问题,所以想了各种 阅读全文

posted @ 2017-08-29 16:56 ^~~^ 阅读(217) 评论(0) 推荐(0) 编辑

Effective C++ 条款07

摘要: 为多态基类声明virtual 析构函数。Declare destructors virtual in polymorphic base classes. 这一点很容易理解,当一个基类的析构函数不是virtual的时候,那么通过基类指针指向derived class进行操作,当执行delete 释放对 阅读全文

posted @ 2017-08-29 15:25 ^~~^ 阅读(95) 评论(0) 推荐(0) 编辑

Effective C++ 条款06

摘要: 若不想使用编译器自动生成的函数,就该明确拒绝。Explicitly disallow the use of compiler-generated functions you do not want. 当我们不希望编译器为我们生成默认的函数时,我们应该自己声明,并将这个函数声明为private且不实现 阅读全文

posted @ 2017-08-29 15:06 ^~~^ 阅读(95) 评论(0) 推荐(0) 编辑

2017年8月28日

Effective C++ 条款05

摘要: 了解C++默默编写并调用哪些函数。Know what functions C++ silently writes and calls 有如下函数会被编译器自动生成,如果在这些函数需要被调用时,且这个对象的作者自己没有创建对应函数。 注意,只有当这些函数被需要调用时,编译器才会创建这些函数。 对于co 阅读全文

posted @ 2017-08-28 11:38 ^~~^ 阅读(109) 评论(0) 推荐(0) 编辑

导航