编写高质量代码
SmartSmall
这个作者很懒,什么都没留下…
展开
-
编写高质量代码——避免在构造析构函数中调用虚函数
#include using namespace std;class Base{ public : Base(){ cout Init(); } virtual void Init(){ cout } };原创 2014-06-01 20:54:05 · 934 阅读 · 0 评论 -
编写高质量代码——慎用私有继承
在C++中,public 公有继承被视为”is-a“关系。class Animal{public : void Eat() { ... }};class Tiger : public Animal{public: bool IsKing() {...}};// Tiger 是一种Animal如果public换成private,编译器不能将派生类对象转原创 2014-06-14 16:17:16 · 1020 阅读 · 0 评论 -
编写高质量代码——首选初始化列表实现类成员的初始化
构造函数:对类成员变量完成初始化赋值操作。原创 2014-06-01 17:27:31 · 963 阅读 · 0 评论 -
编写高质量代码——正确区分void与void*
void:原创 2014-06-05 00:36:26 · 1175 阅读 · 0 评论 -
编写高质量代码——reintepret_cast、static_cast、dynamic_cast、const_cast
reintepret_cast、static_cast、dynamic_cast、const_cast原创 2014-05-31 13:53:19 · 1537 阅读 · 0 评论 -
编写高质量代码——运算符重载,是成员函数还是友元函数
编写高质量代码——运算符重载,是成员函数还是友元函数原创 2014-06-03 23:53:25 · 1970 阅读 · 0 评论 -
编写高质量代码——提防隐式转换带来的麻烦
在C/C++ 语言,允许在不同类型的数据之间进行某一操作或混合操作,如果类型不同,则要将数据转换成相同的数据类型(隐式转换和显示转换)。=========================隐式转换主要发生的情形:▉基本类型之间的隐式转换C/C++ 中规定的两个通用转换原则:1)为防止精度损失,类型总是被提升为较宽的类型。2)所有含有小于整数类型的算术表达式在计算之前其类型都被原创 2014-06-05 22:35:33 · 1064 阅读 · 0 评论 -
编写高质量代码——区分Overloading、Overriding及Hiding之间的差异
编写高质量代码——C++原创 2014-06-03 00:22:00 · 1817 阅读 · 2 评论 -
编写高质量代码——提防对象的切片
多态的实现必须依靠指向同一类族的指针或引用原创 2014-06-14 16:57:46 · 1029 阅读 · 0 评论 -
编写高质量代码——在正确的场合下使用恰当的特性
虚函数:虚函数机制的实现是通过虚函数表和指向虚函数表的指针(存放在对象的空间中)来完成的。1)空间方面:每个类只用一个虚函数表的拷贝,故其占用的空间不是很大。2)时间方面:虚函数的调用开销包括两次整型加法和一次指针间接引用的开销。其动态绑定的实现步骤如下:(a)根据对象的虚指针VPtr找到该对象对应的虚函数表VTable,所需的开销仅是一次偏移量调整(整型加法)加上一次指针间接运算原创 2014-06-14 17:43:48 · 884 阅读 · 0 评论 -
编写高质量代码——“零星”总结(续2)
newdelete与new[]delete[]必须配对使用//注意,由于内置数据类型没有构造、析构函数,所以针对内置数据类型时,释放和内存使用delete或delete[]的效果是一样的。例如:int *pArray = new int[10];...//processing codedelete pArray; //等同于delete[] pArray;虽然针对原创 2014-06-05 23:12:14 · 943 阅读 · 0 评论 -
编写高质量代码——“零星”总结(续3)
明白在C++中如何使用CC++中使用C的程序库,实现C++和C的混合编程:extern "C" { /* code */ }一定要加在C++的代码文件中才能起作用。//C编译器编译函数时不带函数的类型信息,只包含函数符号名字;而C++编译器为了实现函数重载,在编译时会带上函数的类型信息。extern "C"的作用:告诉C++链接器寻找调用函数的符号时,采用C的方式。==========原创 2014-06-14 14:25:01 · 921 阅读 · 0 评论 -
编写高质量代码——谨防因构造函数抛出异常而引发的问题
在C++构造函数中,正确的异常处理方法应该是:发生异常时先将已经创建的东西释放掉,然后再抛出异常给上层调用代码处理。原创 2014-06-01 19:18:04 · 822 阅读 · 0 评论 -
编写高质量代码——堆和栈的区别
1、管理方式不同2、原创 2014-06-01 13:15:14 · 837 阅读 · 0 评论 -
编写高质量代码——区分new的三种形态
■new operator■operator new■placement new原创 2014-06-01 14:59:17 · 960 阅读 · 0 评论 -
编写高质量代码——“零星”总结
不要让main函数返回void//在C++中绝对没有出现过 void main(){ }这样的函数定义,在C语言中也是。//两种 main 的定义方式:int main( void );// int main( int argc, char** argv )//第一版的C语言中只有 int 一种数据类型,为了兼容需要,不明确标明原创 2014-06-05 00:06:04 · 1248 阅读 · 0 评论 -
编写高质量代码——重载operator=的标准三步走
编写高质量代码——重载operator=的标准三步走原创 2014-06-03 23:12:16 · 1766 阅读 · 0 评论