tft每日頭條

 > 圖文

 > c語言函數中使用const修飾形參

c語言函數中使用const修飾形參

圖文 更新时间:2024-08-30 04:21:23

一般來說,C 中根據需要逐個構建對象的情況比較多。假設我們有下面的Tracer(曳光彈)類:

c語言函數中使用const修飾形參(C11新特性46)1

這個類隻是在構造函數,析構函數中輸出了表示構造函數和析構函數被執行的字符串。之所以叫曳光彈,是希望通過它确認對象構建和銷毀的過程,其作用就像曳光彈一樣。

構建,銷毀對象的代碼如下:

c語言函數中使用const修飾形參(C11新特性46)2

以下是輸出結果,和我們預想的結果一樣,構造函數,析構函數各被調用一次。

c語言函數中使用const修飾形參(C11新特性46)3

如果希望同時創建、銷毀多個對象,可以使用如下代碼:

c語言函數中使用const修飾形參(C11新特性46)4

以下輸出結果,依然很完美。

c語言函數中使用const修飾形參(C11新特性46)5

輸出如下:

c語言函數中使用const修飾形參(C11新特性46)6

構造函數,析構函數都按照我們期待的那樣被調用,但是有點小問題:一個是語法比較特殊,另外就是内存管理比較麻煩。

allocator

稍微晚一點的C 在标準庫中,增加了allocator模闆類,使得同樣的事情變得更加簡單:

c語言函數中使用const修飾形參(C11新特性46)7

輸出結果完全相同:

c語言函數中使用const修飾形參(C11新特性46)6

和placement new比較起來,allocator使用了相同的邏輯結構的同時,很好地解決了placement new存在的問題。

作者總結

屬于C 11的新特性實際上就是在調用construct方法是允許調用Tracer的任意構造函數這一點,但是由于這小小的一點改變,使得alloctor變得更加完美。


覺得本文有幫助?請分享給更多人。

關注【面向對象思考】,輕松學習每一天!


面向對象設計,面向對象編程,面向對象思考!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved