c++ 编程坏习惯

  1. 变量未初始化
//错误写法
int age;
double length;
bool flag;

  正确写法,给变量一个初始值

int age =0;
double length=0.0;
bool flag=true;

  2.类成员变量未初始化

//错误写法
class Point{
public:
    Point(){}
    Point(int x,int y):_x(x),_y(y){}
    ~Point(){}
private:
    int _x;
    int _y;
};

   如果通过Point默认构造函数来创建实例时,这个实例的数据未被定义。正确写法,给成员变量赋初值。

class Point{
public:
    Point(){}
    Point(int x,int y):_x(x),_y(y){}
    ~Point(){}
private:
    int _x=0;
    int _y=0;
};

  3.使用裸指针

//错误写法
void func()
{
    Point p * = new Point;
    //do something
    delete p;
}

  如果在delete之前函数返回了,会出现内存泄漏。正确写法,使用智能指针

void func()
{
    auto p = std::make_unique<Point>();
    //do something

}

  4.包含未使用的头文件

//错误写法
#include <iostream>
#include <string> //未使用
int main()
{
    std::cout<<"hello world"<<std::endl;
    return 0;
}

  程序编译时间变久,正确做法将未使用的头文件剔除

#include <iostream>

int main()
{
    std::cout<<"hello world"<<std::endl;
    return 0;
}

   5.命名空间污染

//错误写法
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector myvec = {1,2,3};
    for(auto i:myvec)
    {
        cout<<i<<endl;
    }
    return 0;
}

  标准库中有很多类和函数,可能会跟其他名称发生冲突,正确做法应该把using namespace std 去掉,用到准备库的方法时添加std::

#include <iostream>
#include <vector>
int main()
{
    std::vector myvec = {1,2,3};
    for(auto i:myvec)
    {
        std::cout<<i<<std::endl;
    }
    return 0;
}

  6.滥用全局变量

  全局变量会让代码难调试、线程不安全、耦合严重

  正确写法:尽量用局部变量、函数参数、类成员。

  7.用 int 存所有数字

vector<int> v = {1,2,3};
int i = -1; //错误用法
if (i < v.size()) {  // 致命坑
    // i 被强制转成无符号超大正数,永远成立
}

  8.传参无脑用值传递(拷贝大对象)

void func(string s) { ... } // 传值,大字符串拷贝很慢
  正确写法:用 const 引用
void func(const string& s) { ... }
posted @ 2026-05-08 16:21  看时光飞驰我  阅读(7)  评论(0)    收藏  举报