0

我会尽量做到简洁,虽然我知道这些问题可以被认为是“基本的”,但我已经看过 cplusplus.com 和 yolinux 教程等网站,但我需要有人像我一样向我解释这一点刚刚头部受了重伤。。

1)

class Rectangle {
private:
    int lineNumber; // LineNumber of the ACSIL Tool
    float valueMax; // value of the higher limit of the rectangle
    float valueMin; // value of the lower limit of the rectangle
public:
    Rectangle(SCStudyInterfaceRef sc, int lineNumber, float valueMax, float valueMin);
    int getLineNumber();
    float getValueMax();
    float getValueMin();
};

因此 int linenumber、valueMax 和 ValueMin 被声明为私有成员,因此只能由同一类的成员访问,这很好。但是“public:”之后的部分呢?

a) 是矩形(SCStudyInterfaceRef sc, int lineNumber, float valueMax, float valueMin); 一个被重载的函数?如果是,则 int getLineNumber() 等是该函数的一部分还是该类的公共部分的单独成员?

2)

Rectangle::Rectangle(SCStudyInterfaceRef sc, int lineNumber0, float value1, float value2) {
    lineNumber = lineNumber0;
    int value2_greater_than_value1 = sc.FormattedEvaluate(value2, sc.BaseGraphValueFormat, GREATER_OPERATOR, value1, sc.BaseGraphValueFormat); 
    if (value2_greater_than_value1 == 1) {
        valueMax = value2;
        valueMin = value1;
    } else {
        valueMax = value1;
        valueMin = value2;
    }
}

int Rectangle::getLineNumber() {
    return lineNumber;
}

float Rectangle::getValueMax() {
    return valueMax;
}

float Rectangle::getValueMin() {
    return valueMin;
}

a)我很确定在矩形类的公共部分中定义的函数在这里被“定义”,或者类似的东西。

b) 我对 Rectangle::Rectangle(SCStudyInterfaceRef sc, int linenumber0, float value1, float value2) 部分发生的事情感到非常困惑。我了解函数本身内发生的事情的逻辑,但我对在“ ( ) ”中输入的参数以及这与类公共部分内发生的事情究竟有什么关系感到困惑。这确实是需要回答的最重要的问题。

我尽量做到简洁明了,希望能在理解这种语法方面有所帮助。

4

3 回答 3

0

Rectangle::Rectangle 是类构造函数。每当创建 Rectangle 对象时都会调用它。阅读构造函数以更好地理解。

构造函数正在为 valueMax 和 valueMin 成员变量设置初始值。它使用传递给构造函数的参数来执行此操作。阅读函数参数以更好地理解。

于 2013-07-13T23:46:42.230 回答
0

问题1
这是一个有4个参数 的构造函数。

int getLineNumber();
float getValueMax();
float getValueMin();

都是类中的成员函数。

问题2
前面定义的构造函数是用4个参数调用的。如果没有定义其他构造函数,那么您必须使用正好 4 个参数来实例化该类,即:

Rectangle *rect = new Rectangle(sc, 100, 1.2, 6.8);

或者简单地说:

Rectangle rect(sc, 100, 1.2, 6.8);

这些参数然后用于“将对象设置为初始状态”。

成员函数用于获取处于当前(或最终或唯一)状态的各种值。

于 2013-07-13T23:49:01.430 回答
0

1) a: 如果没有声明 ctor 函数,则编译器为该类编写一个 ctor。但是当类提供 ctor 时,该类不会写入默认 ctor,因此不会发生重载。现在,如果您继续定义一个更多的ctor,可能是因为您希望以其他方式构造对象,那么您将拥有一个重载的ctor。在您的情况下,没有发生超载。

int getLineNumber()只是班级的另一个成员。

2) a: 你是对的。b:放在“()”中的参数是参数列表,如果在某个地方调用了这个函数,那么这个列表是类型匹配的,然后调用函数(在重载的情况下)。现在,如果您编写如下语句:

Rectangle x(a, b, c, d);

那么这意味着您的 sc=a, lineNumber0=b, value1=c, value2=d 用于此函数调用。

于 2013-07-13T23:58:04.617 回答