程設 神奇的MyAny

2021-08-18 09:47:08 字數 1998 閱讀 9592

總時間限制: 

1000ms

記憶體限制: 

65536kb

描述編寫 myany類以及,myany_cast模版(可能多個),使得程式按要求輸出

要求myany類必須要有析構函式,在析構函式以及其他適當的地方(比如複製建構函式,過載的賦值號)要釋放動態分配的空間,不能造成記憶體碎片。

#include #include #include #include using namespace std;

class myclass

void f()

};

// 在此處補充你的**
int main() 

}

輸入多組資料,每組一行,為乙個整數n和乙個無空格字串s。輸出對每組資料,輸出以下內容 n

sn+1 func.

n+3 func.

n+3 func.

n+3 func.

soknot a int

the string is sok

n,n+1,n+3都用具體的數值替換

s用讀入的字串替代樣例輸入

5 good

6 hello

0 0

樣例輸出
5

good

6 func.

8 func.

8 func.

8 func.

goodok

not a int

the string is goodok

6hello

7 func.

9 func.

9 func.

9 func.

hellook

not a int

the string is hellook

提示1. 可以參考 boost的 any的**

2. myany_cast 模板可以寫兩個

3. 可以為myany類 寫乙個 模板的 operator = 

4. 使用 type_info,typeid進行型別方面的判斷。注意type_info 的複製建構函式是私有的,

5. typeid(x)返回乙個 type_info物件的引用,裡面描述了 x的型別資訊。

可以用 typeid(a) == typeid(b)判斷a 和b的型別是否一致

這道題是自己寫乙個類似boost中any的函式,這種動態型別是c++不支援,但很多其他的語言都支援的一種用法。很有意思的一道題。思路是用內部類的繼承和多型來實現,myany類中只有乙個指向base類的指標,這個指標可以指向各種不同的derive類,derive類是乙個模板類,隨引數動態的變化,每次要使用有特徵的函式就利用多型機制去實現即可。**如下:

#include #include #include #include using namespace std;

class myclass

void f()

};// 在此處補充你的**

class myany

virtual ~base(){};

virtual base *getcopy() = 0;

};templateclass derived:public base

virtual ~derived(){}

virtual base *getcopy()

};base *content;

templatemyany(const t a): content(new derived(a)){}

myany(): content(null){}

myany(const myany &a)

~myany()

myany& operator=(const myany &a)

};templatet myany_cast(myany &a)

templatet *myany_cast(myany *a)

}int main()

}

程設十三周

問題描述 這一天,tt 遇到了乙個神秘人。神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。例如 n 10,k 3,答案可以為 4 2 4 tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?本題是spj input 第一行乙個整數 t,表示...

2016程設期末偽題解

期末發揮實在是太差了 比2015年少了好多送分題,整體難度顯得很大,但是考完之後靜下來做又覺得並不是很難orz 1.籃球聯賽 暴力列舉 我用的 dfs 來列舉 2.奪寶探險 暴力 dfs 3.尋找邊緣 從邊緣暴力 dfs 4.猴子摘桃 可以直接用兩個指標指向區間端點做到 o n 5.分形盒 直接遞迴...

2018程設模考2

a 分別記錄紙幣剩餘數量判斷是否能找零,因為資料比較弱所以對於5 5 5的情況沒考慮也過了。includeusing namespace std int main else else else if flag printf true return 0 b 因為一次只能搬一塊或者兩塊磚頭,所以對於n塊...