• 编程感想(随笔,记录灵感)


    一、一个函数尽量不要超过50行,最好不超过20行,好处是立马就能看出函数功能。

    二、在编写一个类的时候,需要考虑深拷贝和浅拷贝问题的时候,同时需要考虑如何处理拷贝构造函数等号运算符重载函数

    例:

    1、问题:如下情况,当执行完“Json jObj2(jObj1);”之后,jObj1与jObj2指向同一块内存空间,当fun函数执行结束后,这块内存空间将被释放2次,导致程序崩溃。

     1 class Json 
     2 {
     3 public:
     4     Json()
     5     {
     6         //经验:防止后面的成员函数频繁判断m_root是否为null
     7         m_root = cJSON_CreateObject();
     8     }
     9     ~Json()
    10     {
    11         cJSON_Delete(m_root);
    12     }
    13 private:
    14     cJSON* m_root;
    15 };
    16 
    17 void func()
    18 {
    19     Json jObj1;
    20     Json jObj2(jObj1);
    21 }
    22 
    23 int main(void)
    24 {
    25     func();
    26     return 0;
    27 }
    问题2示例代码

    2、解决方法:

    (1)禁止使用拷贝构造函数和等号运算符重载,具体方法是把拷贝构造函数和等号运算符重载函数私有化,不用写函数体。(实现简单)

    (2)自定义拷贝构造函数和运算符重载函数,给jObj2另外分配一块内存空间。(实现复杂)

    三、在编写程序时,把常量、宏定义等等专门放到一个Def.h的头文件中,程序与程序有交互(通信等等)的时候,就可以通过包含Def.h头文件,来达到标准统一。

    四、Windows系统下,文件名不区分大小写。如下图:

  • 相关阅读:
    Less35、Less36【无闭合注入,mysql_real_escape_string()】
    Less34【POST方式宽字符注入】
    Less29,30,31【jsp环境搭建、WAF】
    Less28、28a【select、union、空格过滤】
    Less27、27a【select、union、空格过滤】
    Less26,26a【空格符号过滤】
    Less25,25a【and/or过滤】
    Less24【二次注入】
    Less23【报错注入】
    NFC
  • 原文地址:https://www.cnblogs.com/yongqiang/p/6102766.html
Copyright © 2020-2023  润新知