//
// MyClass definition
#pragma once
class MyClass
{
public:
int Value;
};
typedef MyClass* MyClassPtr;
//
// Tester methods
void TestRef(char* i)
{
*i =
}
void TestNoRef(char i)
{
i =
}
void TestRef(MyClassPtr* m)
{
(*m)
}
void TestNoRef(MyClassPtr m)
{
m
}
void TestCreateRef(MyClassPtr* m)
{
delete (*m);
*m = new MyClass();
(*m)
}
void TestCreateNoRef(MyClassPtr m)
{
m = new MyClass();
m
}
int main(int argc
{
char c =
TestRef(&c);
printf(
TestNoRef(c);
printf(
MyClassPtr m = new MyClass;
m
TestRef(&m);
printf(
TestNoRef(m);
printf(
TestCreateRef(&m);
printf(
TestCreateNoRef(m);
printf(
delete m;
return
}
這兩段分別用 C# 和 C++ 實現的代碼的輸出結果都是一樣的
具體的原因相信經過大家的分析應該會很清楚的
[
From:http://tw.wingwit.com/Article/program/net/201311/15038.html