new 操作符所執行的工作和型別安全總結

2021-04-30 21:14:58 字數 821 閱讀 6243

一、new 操作符所執行的工作

1. 從託管堆(managed heap)中分配指定型別所需數量的位元組來作為儲存其物件的記憶體空間。

2. 初始化物件的附加成員(overhead members)。每個物件例項都有兩個附加成員。其一,指向型別方法表的指標,第二個成員為syncblockindex. clr使用這倆個成員來管理物件例項。

3. 傳人new操作符中指定的引數, 呼叫型別的例項構造器。 

二、型別安全總結

class b

int x;

class d: b

int y;

語句ok

cte(compilation time error)

rte(run time error)

system.object o1 = new system.object();

√system.object o2 = new b();

√system.object o3 = new d();

√system.object o4 = o3;

√b b1 = new b();

√b b2 = new d();

√d d1 = new d();

√b b3 = new system.object();

√d d3 = new system.object();

√b b4 = d1;

√d d2 = b2;

√d d4 = (d)d1;

√d d5 = (d)b2

√d d6 = (d)b1;

√b b5 = (b)o1;

√b b6 = (d)b2;√

new 操作符和 new 操作的區別

操作符 new operator 和 new操作 operator new 的區別。當你寫這樣的 string ps new string memory management 你使用的 new 是 new 操作符。這個操作符就象 sizeof 一樣是語言內建的,你不能改變它的含義,它的功能總是一樣的...

new操作符過載的使用

include include class blanks void blanks operator new size t stallocateblock,char chinit int main 過載new操作符第乙個引數必須是size t型別,並且傳入的值就是類的大小。因為類的大小為1。如果類中含...

new操作符的實現原理

new操作符的實現原理就4條 新建乙個物件o,將o的 proto 屬性指向建構函式的原型屬性prototype繫結建構函式的執行上下文到o上,並執行建構函式得到返回值s 如果s是乙個物件,new 操作符返回的就是這個s物件 如果s不是乙個物件,new 操作符返回的就是o 下面我們來構造乙個new操作...