C++矩形类关于语法的说明

C++ Rectangle Class clarification regarding syntax

本文关键字:语法 说明 于语法 C++      更新时间:2023-10-16

我会尽量简明扼要,虽然我知道这些问题可以被视为"基本"问题,但我已经看过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被声明为私有成员,因此只能由同一类的成员访问,这没关系。但是,"公众:"之后的部分呢?

a) 是矩形(SCStudyInterfaceRef sc,int lineNumber,float valueMax,float value Min);一个正在过载的函数?如果是,那么int getLineNumber()etc是该函数的一部分,还是该类公共部分的独立成员?

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) 我真的很困惑矩形::矩形(SCStudyInterfaceRef sc,int linenumber0,float value1,float value 2)部分发生了什么。我理解函数本身发生的事情的逻辑,但我对"()"中输入的参数以及这与类公共部分内发生的事情之间的确切关系感到困惑。这确实是需要回答的最重要的问题。

我已经尽力做到简明扼要,希望能对理解这种语法有所帮助。

问题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);

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

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

矩形::矩形是类构造函数。只要创建了Rectangle对象,就会调用它。阅读有关构造函数的内容以更好地理解。

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

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。