建構函式 虛函式方法求1 2 3 n

2021-10-24 21:52:49 字數 1834 閱讀 8597

題目:求1+2+…十n,要求不能使用乘除法、for、while、if、 else.switch,case等關鍵字及條件判斷語句(a?b:c)

解法1:建構函式求解,建立n個該型別的例項,把累加放在建構函式裡做。

class temp 

static void reset()

static unsigned int getsum()

};unsigned int temp::n = 0;

unsigned int temp::sum = 0;

unsigned int sum_solution1(unsigned int n)

解法2:虛函式求解,定義兩個函式,乙個函式充當遞迴函式的角色,另乙個函式做遞迴的終止判斷。做遞迴終止的判斷時,可對n進行兩次非運算。即當n=0時,即可判斷遞迴終止。

class a;

a*array[2];

class a

};class b:public a

};int sum_solution2 (int n)

建構函式知識點補充:

1.建構函式是一種特殊的成員函式,它的名字和類名相同,沒有返回值,不需要使用者呼叫(使用者也不能呼叫),而是在建立物件時自動執行。建構函式的作用是在建立物件時進行初始化工作,最常見的就是對成員變數賦值。

2.一旦在類中定義了建構函式,那麼建立物件時一定會被執行;如果建構函式有引數,建立物件時就要傳參。

3.建構函式不允許有返回值也不能宣告為void

4.如果使用者自己沒有定義建構函式,那麼編譯器會自動生成乙個預設的建構函式,只是這個建構函式的函式體是空的,也沒有引數,不執行任何操作。

5.建構函式允許過載,但只有乙個被執行

6.不帶引數的建構函式使該類的每乙個物件都得到相同的初始值。帶引數的建構函式,在呼叫不同物件的建構函式時,將不同的資料傳給建構函式,以實現不同的初始化。如:box::box(int h,int w,int len)

7.引數初始化表對資料成員初始化

#include using namespace std;

class box

int volume( );

private :

int height;

int width;

int length;

};box::box( ) //定義乙個無參的建構函式

int box::volume( )

int main( )

{ box box1; //建立物件 box1,不指定實參

cout<<"the volume of box1 is "《析構函式知識點補充:

1.析構函式也是一種特殊的成員函式,沒有返回值,不需要使用者呼叫,而是在銷毀物件時自動執行。與建構函式不同的是,析構函式的名字是在類名前面加乙個」~「符號

2.析構函式沒有引數,不能被過載,因此乙個類只能有乙個析構函式。如果使用者沒有定義,那麼編譯器會自動生成。

3.析構函式在物件被銷毀前執行;要知道析構函式什麼時候被呼叫,就要先知道物件什麼時候被銷毀。

4.三個物件入棧的順序依次是 stu1、stu2、stu3,出棧(銷毀)的順序依次是stu3、stu2、stu1,它們對應的析構函式的執行順序也就一目了然了。

虛函式知識點補充:

1.在基類用 virtual 宣告成員函式為虛函式。

2.在派生類中重新定義此函式,要求函式名、函式型別、函式引數個數和型別全部與基類的虛函式相同,並根據派生類的需要重新定義函式體。

3.定義乙個指向基類物件的指標變數,並使它指向同一類族中需要呼叫該函式的物件。通過該指標變數呼叫此虛函式,此時呼叫的就是指標變數指向的物件的同名函式。

刷演算法 求1 2 3 n

求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 題目要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句,那麼首先就要思考怎麼才能使n一次次的相加且到0的時候結束。首先...

演算法練習篇之 求1 2 3 n

求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 累加不能用迴圈的話,那就試試遞迴吧。判斷遞迴的終止條件不能用 if 和 switch,那就用短路與代替。n 0 sum sum solution n 1 0只有滿足n ...

劍指offer 遞迴 求1 2 3 n

題目描述 求1 2 3 n,要求不能使用乘除法 for while if else switch case等關鍵字及條件判斷語句 a?b c 思路 使用遞迴f n f n 1 n,但是不能使用if進行遞迴出口的控制,因此利用python中and的屬性,即and判斷都為真的話輸出and後面的那個數字。...