不正确的输出和变量未用Eclipse CDT初始化构造函数

Incorrect output and variables not initializing in constructor with Eclipse CDT

本文关键字:Eclipse CDT 初始化 构造函数 输出 变量 不正确      更新时间:2023-10-16

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

#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 足够聪明,您可以在参数列表中使用与成员变量相同的名称,并且当您仅复制该值时,您也可以这样做 - 它可以非常清楚地传达该参数的内容。。

始终记得按照您在课堂上声明的顺序初始化成员变量。