如何让 C++ 和 C# 一样易用,而且效率更高?
(未完成,待续。。)
第一章:C++基本功
1. 养成良好的编码习惯。
2. 堆上的资源随用随还,严格控制生命周期。
第二章:一些调试心得
1. 在VisualStudio环境下,曾出现 Detected memory leaks!,调试很久,有如下心得:
a. 可以逐步简化程序,确认问题点,同时使用 _CrtSetBreakAlloc(x) 辅助查找问题。
b. 使用 Borland 公司开发的 DevPartner,比较强大。
2. 一处 class 继承 后的问题。
在 C#中,几乎不用担心内存问题,而C++中则有些区别。
1 class A 2 { 3 protected: 4 int * p1; 5 }; 6 7 class A1 : class A 8 { 9 A1() 10 { 11 p1 = new int[10]; 12 } 13 ~A1() 14 { 15 delete [] p1; 16 } 17 };
以上代码,可能会报 内存泄露的错误。比如按以下方式调用:
1 A * a = new A1(); 2 delete a;
实际析构方式是: ~A(), 就截至了,并没有调用 ~A1()。 这导致内存泄露。
所以:int * p1 是基类的成员,就应该有基类来释放。子类想使用可以,但是仅限于使用,不能拥有(即:构造、析构都不应该由它来管理)。
修改后的代码如下:
class A { protected: int * m_p1; public: A(int p1_count) { m_p1 = new int[p1_count]; } ~A() { delete [] p1; } }; class A1 : class A { A1() : A(10) { } ~A1() { } };