//
// MyClass definition
#pragma once
class MyClass
{
public:
int Value;
};
typedef MyClass* MyClassPtr;
//
// Tester methods
void TestRef(char* i)
{
*i = b;
}
void TestNoRef(char i)
{
i = c;
}
void TestRef(MyClassPtr* m)
{
(*m)>Value = ;
}
void TestNoRef(MyClassPtr m)
{
m>Value = ;
}
void TestCreateRef(MyClassPtr* m)
{
delete (*m);
*m = new MyClass();
(*m)>Value = ;
}
void TestCreateNoRef(MyClassPtr m)
{
m = new MyClass();
m>Value = ;
}
int main(int argc char* argv[])
{
char c = a;
TestRef(&c);
printf(%c\n c); // output: b
TestNoRef(c);
printf(%c\n c); // output: b
MyClassPtr m = new MyClass;
m>Value = ;
TestRef(&m);
printf(%d\n m>Value);
TestNoRef(m);
printf(%d\n m>Value);
TestCreateRef(&m);
printf(%d\n m>Value);
TestCreateNoRef(m);
printf(%d\n m>Value);
delete m;
return ;
}
这两段分别用 C# 和 C++ 实现的代码的输出结果都是一样的后面用 MyClass 测试的输出结果是
具体的原因相信经过大家的分析应该会很清楚的另外如果大家有兴趣可以用 structs 再试试也可以同时对 structs 在 C++ 和 C# 中的区别有进一步的认识
[] [] []