
正文
如何让 C++ 和 C# 一样易用,而且效率更高?
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
(未完成,待续。。)
第一章:C++基本功
1. 养成良好的编码习惯。
2. 堆上的资源随用随还,严格控制生命周期。
第二章:一些调试心得
1. 在VisualStudio环境下,曾出现 Detected memory leaks!,调试很久,有如下心得:
a. 可以逐步简化程序,确认问题点,同时使用 _CrtSetBreakAlloc(x) 辅助查找问题。
b. 使用 Borland 公司开发的 DevPartner,比较强大。
2. 一处 class 继承 后的问题。
在 C#中,几乎不用担心内存问题,而C++中则有些区别。
class A
{
protected:
int * p1;
}; class A1 : class A
{
A1()
{
p1 = new int[];
}
~A1()
{
delete [] p1;
}
17 };
以上代码,可能会报 内存泄露的错误。比如按以下方式调用:
A * a = new A1();
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()
{
}
~A1()
{
}
};






