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