C 中的property庫的設計與實現過程(一)

2021-04-09 03:25:04 字數 872 閱讀 8660

雖然現在很忙,有很多事情要做,但是腦子裡總在想一些稀奇古怪的事情而停不下來。比如說這個property,就是我最近睡覺前想的最多的東西。特別是前幾天,不小心被關在實驗室沒法出去只好在這裡睡覺,睡覺前又想到這個property,於是手癢,動手真的把粗糙的想法實現了一遍。

在說如何實現之前,首先應該說說什麼是property,以及為什麼要做這麼乙個東西。

property首先應該是borland c++引入的新的c++關鍵字,它很方便但是不標準,c++標準化組織也從來沒想過把它納入標準。至今為止,我覺得最爽的property應該屬於.net裡面的實現,比如說c#:

public

class

sample

...set

...}

//something else...}

很容易發現,如果我願意把x作為乙個int暴露給外部隨便改,那麼我直接寫

//treat x as a ****** int.

public

intx;

/**/

/*set}*/

就可以把x變成普通成員了。相反亦然。

這樣非常的方便,而且也使得設計人員變得更加的自由:因為他不需要擔心今後會因為x要變成readonly、或者要檢查輸入、或者其他什麼bt需求而對**傷筋動骨,簡簡單單的選擇實現get或set就好了,而對於x這個介面,卻始終能夠保持統一。

正因為property有這些好處而c++沒有在語言這一層提供實現方法,property庫就顯得非常有必要了。不過還是必須看到,既然是實現c++非標準的東西,其**肯定無法好看,那麼這個property庫也就只能設計成乙個基礎程式庫的樣子,他的使用者是其他庫的編寫者。

ok,接下來,我就會開始討論最基本的property的實現思路和遇到的第乙個問題。

C 中Property和Attribute的區別

c 中property和attribute的區別 attribute 字段 property 屬性 get set 屬性的正常寫 private string name public string name set 簡寫 自動屬性 public string name 然後 編譯器 會轉換成 正常寫...

C 中的域(Field)和屬性(Property)

c 中的域 field 和屬性 property 一般的命名習慣 field 對應的屬性 或許狹義地進行區分一下,get和 set的實現的稱為屬性,其他的變數稱為資料成員。c 將屬性從其他語言中的一種特殊約定提公升成為一種第一等 first class 的語言特性。屬性在使我們可以將資料成員暴露為公...

Object C中的特性 property

簡介 property組合了新的預編譯指令和新的屬性訪問器語法。1 property 表示宣告了物件的乙個屬性。例如 property float smshandling 表示某個類的物件具有了乙個float型別的名為smshandling的屬性。property自動生成了 setsmshandli...