使用代码分析在 Visual Studio 2010 中查找未初始化的成员

发布于 2024-11-15 15:46:20 字数 118 浏览 2 评论 0原文

我在类中使用了一些未初始化的成员。出乎意料的是,MSVC++ 2010 编译器没有抱怨,代码分析也没有产生错误/警告。它确实只能抱怨未初始化的本地变量或未引用的本地变量。

我应该做什么设置才能发现此类错误?

I got some members in my class used without being initialized. Unexpectedly, the MSVC++ 2010 compiler doesn't complain and code analysis produce no error/warning. It does able to complain about uninitialized local var or unreference local var only.

What kind of setup should I do to pickup such errors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会发光的星星闪亮亮i 2024-11-22 15:46:20

实际上,这不是错误或警告。如果类成员未显式初始化,则使用默认初始化进行初始化(如果必须初始化)。

记录

class f{
std::string m
f():m(){};
};

class f{
std::string m
f(){};
};

做同样的事情。

如果类成员没有默认构造函数,则必须在类构造函数中对其进行初始化,编译器将给出错误。

class A{
public:
   a(int i):m_i(i){};
protected:
  int m_i;
  a(){};
};

class B{
   A m_a;
   B(){}; 
};

这将导致编译器错误。

Actually, that is not an error or warning. If class member does not initialized explicitly, it initializes with default initialization (if must be initialized).

records

class f{
std::string m
f():m(){};
};

class f{
std::string m
f(){};
};

doing the same.

If class member has no default constructor, it must be initialized in class constructor, and compiler wil give an error for this.

class A{
public:
   a(int i):m_i(i){};
protected:
  int m_i;
  a(){};
};

class B{
   A m_a;
   B(){}; 
};

This will cause compiler error.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文