gpt4 book ai didi

c++ - 重构构造函数以使用初始化列表

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:52 24 4
gpt4 key购买 nike

我正在处理一个非常大的代码库(超过 3M loc),我们显然有很多类,但其中大多数不在构造函数中使用初始化列表,而是在构造函数主体中分配值(一些代码是很久以前写的,所以这已经成为事实上的标准)。或许这些已被编译器优化掉,但我不确定是否真的如此。

我正在尝试推广初始化列表的使用,但是有一个庞大的代码库需要更新,那么有什么工具可以自动为我做这件事吗?将它指向一个类,找到所有 m_var = 0; 行并将它们移动到初始化列表(如果需要则创建它)。

除了将体内初始化转换为初始化列表之外,有没有办法发现成员变量以正确的顺序初始化(即与它们在类的头文件中定义的顺序相同?我是希望 CppCheck 会发现它,但它似乎没有。

最佳答案

您好,我是 cppcheck 开发人员。

Cppcheck 还检查不匹配的顺序。但这是一个不确定的检查。

例如:

class Fred {
public:
Fred() : y(0), x(0) {}
int x;
int y;
};

Cppcheck 输出:

daniel@debian:~/cppcheck$ ./cppcheck --enable=style --inconclusive 1.cpp
Checking 1.cpp ...
[1.cpp:3] -> [1.cpp:4]: (style, inconclusive) Member variable 'Fred::x' is in the wrong place in the initializer list.

只要订单不匹配,我们的简单检查就会发出警告。这就是为什么它没有定论。在上面的代码中,初始化顺序实际上并不重要 - 因为上面代码中的所有成员都是整数,并且所有初始化器都是常量文字。

关于c++ - 重构构造函数以使用初始化列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40591906/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com