【问题标题】:C++ Rectangle Class clarification regarding syntax关于语法的 C++ 矩形类说明
【发布时间】:2013-07-14 08:38:34
【问题描述】:

我会尽量做到简洁,虽然我知道这些问题可以被认为是“基本的”,但我已经看过 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) 部分发生的事情感到非常困惑。我了解函数本身内发生的事情的逻辑,但我对在“ ( ) ”中输入的参数以及这与类公共部分内发生的事情究竟有什么关系感到困惑。这确实是需要回答的最重要的问题。

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

【问题讨论】:

  • 注意构造函数应该使用构造函数初始化列表来初始化成员。

标签: c++ syntax


【解决方案1】:

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

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

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

【讨论】:

  • 你已经用 C# 初始化了它。
  • 你可以(应该)s/ = new Rectangle//。
  • 嗯...我没有关注你...?
  • en.wikipedia.org/wiki/Sed,但我的意思是去掉前两个斜杠之间的部分,因为new 在 C++ 中返回一个指针,它几乎是不可取的。
  • 啊……嗯……取决于你想用它做什么。如果您在某种列表或层次结构中使用对象,则需要使用指针。如果没有更大的结构,很少单独使用单个矩形。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    int getLineNumber() 只是该类的另一个成员。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-16
      • 2015-01-07
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2011-06-22
      相关资源
      最近更新 更多