[英]C++ Rectangle Class clarification regarding 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被聲明為私有成員,因此只能由同一類的成員訪問,那就很好。 但是“ public:”后面的部分呢?
a)是Rectangle(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)部分上發生的事情感到困惑。 我了解函數本身內部發生的邏輯,但對於在(())中輸入的參數及其與類公共部分內部發生的關系的確切含義感到困惑。 這確實是需要回答的最重要的問題。
我試圖盡可能簡潔明了,希望能對理解該語法有所幫助。
Rectangle :: Rectangle是類的構造函數。 每當創建Rectangle對象時,就會調用它。 閱讀構造函數以更好地理解。
構造函數正在為valueMax和valueMin成員變量設置初始值。 它使用傳遞給構造函數的參數來執行此操作。 閱讀函數參數以更好地理解。
問題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);
這些參數然后用於“將對象設置為初始狀態”。
成員函數用於獲取其當前(或最終或僅)狀態下的各種值。
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.