摘要: 相信很多使用C++语言的人都有这么一种错误的观点 - 除了主函数,其他函数都应当声明为某个类的成员函数,以实现封装性。 这种观点错在哪里?我们又该如何在成员函数与非成员函数之间进行选择呢? 针对这个问题,本文将给出一种非常科学的解决方案。 阅读全文
posted @ 2017-01-27 12:35 穆晨 阅读(1676) 评论(0) 推荐(0) 编辑
摘要: 作为一名优秀的程序员,必须保证自己的代码能提供正确的,完善的接口,如此方能和同事,甲方更好的沟通合作,也让自己的代码更加地容易维护。 本文将介绍一些设计优秀接口的思路。 阅读全文
posted @ 2017-01-27 12:30 穆晨 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 在前面的文章中,细致地分析了构造函数,拷贝构造函数,赋值运算符,析构函数这几个类中最重要函数的用法。 如果严格地遵循这些做法,可以消除绝大部分资源管理的问题。 然而,要想更灵活的使用对象中的资源,仅仅这些还不够。譬如,若你想自己控制对象资源的生命周期(不要在作用域结束的时候自动被析构掉),那就应当好好考虑下智能指针了。 有人说,智能指针是属于设计模式范畴的产物,这么说有点偏激,但也确实有点道理。 阅读全文
posted @ 2017-01-27 12:22 穆晨 阅读(941) 评论(0) 推荐(0) 编辑
摘要: 标题一看似乎是非常直观简单,没必要特别写下一篇随便记录。 然而,在实际开发中,你会发现做到这一点对于经验不足的 C++ 程序员来说绝对是一个挑战。 要做到复制每一个成分,就一定小心下面说到的两点。 阅读全文
posted @ 2017-01-27 12:17 穆晨 阅读(374) 评论(1) 推荐(0) 编辑
摘要: 如果系统自动生成的赋值运算符重载函数不合乎你的要求,那么就应当定制自己的赋值运算符。 然而,定制赋值运算符有两点是非常值得注意的,本文将讲解这两点,让你写出更优质的 =运算符。 阅读全文
posted @ 2017-01-27 12:14 穆晨 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 本文将讲解一个新手C++程序员经常会犯的错误 - 在构造/析构函数中使用虚函数,并分析错误原因所在以及规避方法。 阅读全文
posted @ 2017-01-27 12:10 穆晨 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 析构函数的作用在于完成对象销毁的一些“善后工作”,然而,某些不科学的设计会产生一些问题。 本文将说明其中的一种不科学设计 - "将异常处理机制设定在析构函数中" 会产生的问题,以及解决方案。 阅读全文
posted @ 2017-01-27 11:48 穆晨 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 在很多类中,可以看到其析构函数都是声明为虚函数的。 那么,为何要将析构函数声明为虚函数?哪些情况要将析构函数声明为虚函数? 本文将为你解惑。 阅读全文
posted @ 2017-01-27 11:45 穆晨 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 如果你不想要编译器帮你自动生成的拷贝机制 (参考前文),那么你应当明确的拒绝。 如何拒绝?这便是本文要解决的主要问题。 阅读全文
posted @ 2017-01-27 11:41 穆晨 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 对于一个类来说,最最基础的三类成员函数莫过于:构造函数,析构函数以及拷贝函数 (copy构造函数和=重载函数)。即使你的类没有为这些函数做出定义,C++ 也会自动为你创建。本文将讲述的是 C++ “偷偷”为你创建的这三个函数究竟是怎么样的。 了解这些,能更清楚代码是如何运转的,从而写出自己需求的(这三类)函数,确保对象高效,节约。 阅读全文
posted @ 2017-01-27 11:38 穆晨 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 某个对象若不被初始化,意味着它的执行很有可能导致不确定的结果,这是我们的代码所要坚决避免的情况。 本文将讲解 C++ 代码中关于对象初始化的方方面面。 阅读全文
posted @ 2017-01-27 11:35 穆晨 阅读(316) 评论(0) 推荐(0) 编辑
摘要: const 关键字是常量修辞符,如果要告知编译器某个变量在程序中不会发生改变,则可将其声明为 const。 但,对 const 关键字的认识不能仅仅停留在这一层 - 它提供了很多更强大的功能。 因此很多情况下 const 关键字的使用方法也不是简单的 const + 变量,其用法总的来说是比较灵活的。 阅读全文
posted @ 2017-01-27 11:33 穆晨 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 在面向过程语言,如 C 语言中,#define 非常常见,也确实好用,值得提倡。但在如今面向对象的语言,如 C++ 语言中,#define 就要尽量少用了。 为何在 C++ 中就要少用了呢? 这是因为...... 阅读全文
posted @ 2017-01-27 11:27 穆晨 阅读(1137) 评论(0) 推荐(0) 编辑