由C 轉向C 需要注意的變化 二

2021-04-19 03:29:13 字數 2238 閱讀 2928

引言:每隔10年左右,程式設計人員就需要花費大量的時間和精力去學習新的程式設計技術。在80年代是unix和c,90年代是windows和c++,現在又輪到了微軟的.netframework和c#。儘管需要學習新的技術,但由此帶來的好處卻遠高於付出的勞動。

系列文章:[由c++轉向c#需要注意的變化(一)]

在c++中,new關健字可以在堆上生成乙個物件。在c#中卻不是這樣。對於引用型別變數而言,new關健字在堆上生成乙個物件;對於結構等值型別變數而言,new關健字在棧中生成乙個物件,並需要呼叫constructor。 免費資源

事實上,我們可以不使用new關健字而在棧上生成乙個結構型別的變數,但這時需要注意的是,new關健字能夠初始化物件。如果不使用new,則在使用前必須手工地對結構中的所有成員進行初始化,否則在編譯時會出錯。

免費資源

usingsystem;//有二個成員變數和乙個構造器的簡單結構

publicstructpoint

publicintx;

publicinty;

} sflj kg^&fgd

publicclasstester

it資訊之家

publicvoidrun()

免費資源

//乙個可以接受point作為引數的方法

privatevoidsomemethod(pointp)

x",p.x,p.y);}}

sflj kg^&fgd

屬性 vd;k;l rdfg

大多數的c++程式設計人員都希望使成員變數的屬性為private,這種隱藏資料的想法促進了資料封裝概念的出現,使我們能夠在不改變使用者依賴的介面的情況下而改變類的實現。通常情況下,我們只希望客戶獲取或設定這些成員變數的值。因此,c++程式設計人員開發出了用來訪問private成員變數的訪問器。 45398 it55學習it知識,享受it生活 4dfkjn

我們可以在employee類中新增乙個age屬性,使客戶可以很方便地獲取和設定員工年齡這個類的成員:

45398 it55學習it知識,享受it生活 4dfkjn

publicintage

set}

it資訊之家

關健字value可以被屬性隱性地使用。如果編寫如下的**: it資訊之家

fred.age=17;

編譯器將會把值17傳遞給value。

通過只採用get而不採用set,我們可以為yearsserved建立乙個唯讀的屬性:

publicintyearsserved

}accessors的使用

privatevoidrun()

",fred.age);

fred.age=55;

console.writeline("fred'sage:",

fred.age);

免費資源

//fred.yearsserved=12;//是不被允許的

45398 it55學習it知識,享受it生活 4dfkjn

我們可以通過屬性獲取fred的年齡,也可以使用這一屬性設定年齡。我們雖然可以訪問yearsserved屬性獲得它的值,但不能設定值。如果沒有注釋掉最後一行的**,在編譯時就會出錯。

it資訊之家

如果以後決定從資料庫中獲取employee的年齡,我們就只需要改變訪問器的實現,而客戶不會受到任何影響。

陣列 c#提供了乙個陣列類,它比c/c++中傳統的陣列更智慧型化。例如,在c#中寫陣列時不會超出邊界。此外,陣列還有乙個更智慧型的夥伴—arraylist,可以動態地增長,管理對陣列大小不斷變化的需求。

sflj kg^&fgd

c#中的陣列有三種形式:一維陣列、多維均勻陣列(象c++中傳統的陣列那樣)、非均勻陣列(陣列的陣列)。我們可以通過下面的**建立一維陣列:

C 需要注意點

11 設定static成員變數初值時,不受任何訪問許可權的束縛。可以再還沒有誕生任何物件的時候就處理static型別成員變數,但首先必須初始化它。2 只要access level允許,任何函式都可以訪問static成員變數。但如果你希望在產生任何object之前就訪問其class的private s...

C語言需要注意的地方

今天看了一本c陷阱與指標的書,從中挑選了一些我自己平常不太注意的地方,或者有些是記不太清的東西,稍微整理了下有以下這些地方 1 與 是不同的,乙個是賦值,乙個是比較 2 與 是不同的,前者是按位與,後者是邏輯與,理解2 1和2 1的結果 3 整形常量第乙個字元是0,則代表8進製,0195這個理解成1...

C 使用erase介面需要注意!!

本來我是不怎麼關注過這個點的,但是今天的一道題把我給難住了,看過答案之後才知道就是因為我對於erase介面使用的不了解造成的,所以特意把這道題拿出來說一下 題目要求是給出以下 的輸出結果 include includeusing namespace std int main for it a.beg...