問你道C 的題

時間 2022-09-16 07:30:07

1樓:匿名使用者

問題:sample s1,s2(2,3); //sample s1怎麼呼叫?呼叫啥?sample s1等價與sample s1()麼?

回答:「sample s1;」 不等價於 「sample s1();」

原因:"sample si;"語句定義了一個sample物件,這個物件的建立要呼叫『建構函式』來完成,由於沒有給出構造引數,因此,匹配呼叫預設建構函式,而在class sample中僅有sample()是預設的建構函式,但「sample s1不等價與sample s1()」,sample s1()的寫法,也許初學者的目的是想顯示指明呼叫建構函式sample::sample(),但是這種寫法與定義一個返回class sample的類物件的函式衝突,比如:

sample f(); f是返回sample物件的函式,但是sample s1(),就變成了宣告s1是一個函式,而不是物件,故不等價。

總而言之,定義類物件時,沒有指明呼叫的建構函式,就是呼叫預設的建構函式。

sample s1(); 是宣告一個返回值為型別sample的物件的函式s1;

sample s1; 是定義一個物件。物件的構建將呼叫建構函式sample::sample()完成。

在如:class sample

//註釋掉此行 若不註釋掉會與下面的建構函式衝突

sample(int a=0,int b=0) //預設初始值,那麼這個就是預設建構函式

//一個類只能有一個預設建構函式

void disp()

};sample s1; //呼叫建構函式sample::sample(int a=0,int b=0),後x=0,y=0。

sample s2(2,3); //呼叫建構函式sample::sample(int a=0,int b=0),後x=2,y=3。

sample s3(); //為宣告函式。

2樓:

應該是class sample 為s1,沒有s1().

這裡主程式開始後顯示兩個函式(或集合)被命名,然後是呼叫s1.disp(), s2.disp()什麼的。

只是簡單的一個輸出顯示擺了,s1輸出時0, s2輸出是3.

這裡初始化的時候已經規定,而且s1只當x=y=0時候才輸出, 而s1()不同,它可以輸出裡面任何想顯示的東西。

3樓:

ssample s1呼叫的是預設的建構函式。也就是sample() 。

sample s1();是錯誤的編譯器會把是s1認為是個函式。呼叫一個

類的預設建構函式是不能帶()的,也就是ssample s1;這種寫發!

求一道C 或C語言程式設計題,求一道c語言程式設計題目,急!!!先謝謝啦!!!

自我程式設計 根據你題意 c語言編寫 1,要使用遞迴函式。2,遞迴層數對應數學位數。我這裡自定義函式int checknum int num,int w 就是你要的型別。其功能是判斷數字num是否是w位數的數字,是返回1,否返回0。w控制遞迴的層數。按照位數輸出1到n的整數。include int ...

C語言的一道選擇題,c語言的一道選擇題

給你這樣寫,你可能就明白了。int x 0,s 0 while x 0 s s x printf d s x的初值為0,第一個!x表示1 1 0成立,執行迴圈體,s x 首先 x是先執行這個運算,然後再使用x的值,所以s s x 即s 0 1 1,此時。x 1 s 1 然後再回到 x 0,x 0,0...

關於C 的一道題

執行point p1 10,20 時建立物件p1,呼叫建構函式point int x 0,int y 0 輸出call the default constructor 執行point p2 p1 時是用已知物件p1初始化p2,所以要呼叫拷貝建構函式point point p 輸出call the c...