关于语法的C ++ Rectangle Class说明

时间:2013-07-13 23:33:18

标签: c++ syntax

我会尝试尽可能简洁,虽然我明白这些问题可以被认为是“基本的”我已经看过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)是Rectangle(SCStudyInterfaceRef sc,int lineNumber,float valueMax,float valueMin);一个正在重载的函数?如果是,则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)部分的内容感到困惑。我理解函数本身内发生的事情的逻辑,但我对在“()”中输入的参数感到困惑,以及这与类公共部分内发生的事情有何关系。这确实是需要回答的最重要的问题。

我试图尽可能简洁明了,理解这种语法会有所帮助。

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

问题1
它是一个constructor,有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);

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

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

答案 2 :(得分: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这个函数调用。