在C 的類中構造陣列的解決方案

時間 2022-07-11 23:05:09

1樓:匿名使用者

你可以這樣:

private中只要宣告一個char* ptr(或者void* ptr);

然後一次性new一塊 raw memory, 具體方法是ptr = new[ sizeof(base)*size];然後每增加一個base到陣列中的時候再初始化, 具體方法是 base* mybase = new(ptr) base(10);//這裡呼叫的建構函式是 base(int d):_d(d) {},然後再ptr = ptr + sizeof(base);

這就解決了你所說的效能問題,當然,這裡析構的時候就比較麻煩,你得要顯式的先呼叫存放在記憶體塊中的base解構函式,然後再delete掉記憶體塊,使用delete

大概覺得你是新手,所以多說一句new(ptr) base(10);這個是placement new

2樓:安心播音

效能的問題取決於你的資料量,而不是程式本身。

所以有幾種方案:

1,為了不過多呼叫建構函式,資料與操作分離。意思就是儘量用傳統的 struct (最好作為內部類),然後另寫一個內部類對該 struct 進行操作。

2,陣列中不要放真實資料,而放指標。缺點是需要管理申請和釋放的記憶體,記憶體的申請釋放更是效能問題。

3,使用類似 std::vector 的容器。

3樓:赫力封亦玉

你是不是想自己設計一個類,像陣列一樣操作,但大小是合適的,需要多少就開多少,不浪費空間.詳細可以聯絡我

智慧燈杆的解決方案?智慧燈杆解決方案?

智慧燈杆 已成為國內外現代化城市建設的新標誌之一。其是遵循城市道路 街道分佈,按照 共建共享 的理念,將各種前沿技術和應用集於一身的新型資訊基礎設施,在智慧城市中扮演 末梢神經元 的角色。它具備 有網 有點 有杆 三位一體的特點,能夠對照明 公安 市政 氣象 環保 通訊等多行業資訊進行採集 釋出以及...

在C中類的構造器,與類中的方法是如何區分的

兩位肯定是理解了,但是卻說錯了。另外,樓主說 構造器 我不知道你這說法 看來的,構造方法 建構函式的英文是constructor,如果你直譯,那確實是。而構造器,更多是見於一些設計模式中。如何區分取決於誰來區分。對面對 的程式設計師來說,構造方法不是 沒有型別修飾符 也更不是 沒有修飾符 1.構造方...

C中類的建構函式怎麼呼叫這個類的另建構函式

就是 myclass myclass new myclass 這句 在建立物件的時候 它會自己呼叫無引數的建構函式 上邊的同志說的 很對啊! myclass myclass new myclass 這樣應該就可以了!c 中例項化的時候,new關鍵字用於建立物件和呼叫建構函式。呼叫建構函式是什麼意思?...