zoukankan      html  css  js  c++  java
  • 如何让 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()
        {
        }
    };
  • 相关阅读:
    接口型模式
    spring-cloud-config安全问题
    适配器模式
    spring boot + quartz 集群
    LeetCode Weekly Contest 147
    LeetCode Weekly Contest 146
    LeetCode Weekly Contest 144
    LeetCode Weekly Contest 143
    LeetCode Weekly Contest 142
    LeetCode Weekly Contest 141
  • 原文地址:https://www.cnblogs.com/robnetcn/p/5962925.html
Copyright © 2011-2022 走看看