c++ - 使用 Eclipse CDT 在构造函数中未初始化的输出不正确和变量

标签 c++ eclipse class initialization eclipse-cdt

有人可以向我解释为什么这段代码在 Eclipse CDT 中不起作用吗?当我运行该程序时,输出为“310598136”。我还在第 7 行收到一个错误,上面写着“‘成员 x(和 y)未在此构造函数中初始化”,但我不知道为什么当我在构造函数中有变量并在私有(private)内存中分配内存时它们没有初始化类的一部分。有人可以告诉我我做错了什么吗?

#include <iostream>
using namespace std;

class Rectangle
{
public:
    Rectangle(int a, int b)
    {
        a = x;
        b = y;
    }
    int getArea();
private:
    int x;
    int y;
};

int Rectangle::getArea()
{
    return x * y;
}

int main()
{

    Rectangle bob(2,3);

    cout << bob.getArea();

    return 0;
}

最佳答案

您已经在构造函数中交换了变量的顺序。

改成

Rectangle(int a, int b) : x(a), y(b) {}

或者,更好

Rectangle(int x, int y) : x(x), y(y) {}

C++ 足够聪明,您可以在参数列表中使用与成员变量相同的名称,当您只是复制值时,您不妨这样做——它非常清楚地传达了该参数的用途.

永远记住按照在类中声明它们的顺序初始化成员变量。

关于c++ - 使用 Eclipse CDT 在构造函数中未初始化的输出不正确和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49624013/

相关文章:

c++ - 为什么不使用 is_const 类型特征将 const 引用视为 const?

c++ - C++ 中两种不同的 mixin 模式。 (混合?CRTP?)

java - Eclipse Luna 在 Java 调试中挂起

c++ - 光照没有出现在 OpenGL 中

c++ - 在 Eclipse 中的 C++ 中链接 .lib 并在 Windows 中使用 .dll

android - 未找到与给定名称 drawable tab_unselected 匹配的资源

java - 为什么 Eclipse 将插件存储在不同的文件夹中以及如何修复它?

java - 从类对象的方法接收空指针异常

iphone - 数据库层设计

java - 无法使用java中另一个类的公共(public)方法