C++中:
默认的访问控制、继承访问权限不同:struct时public的,class时 private的;
其它基本一样。
C#中:
struct是值类型,class是引用类型的;
struct StructA
{
int id ;
}
class ClassA
{
int id ;
}
StructA A ; // 在栈上新建了一个A的实例
ClassA A ; // 声明了一个A的引用,没有新建任何实例(此时A = null,相当于C++中 ClassA* A ;)
ClassA A = new ClassA() ; // 在堆上新建一个A的实例,并在栈上声明一个指向它的引用
注1:C#函数1等价于C++函数1(而非C++函数2)、C#函数2等价于C++函数2
C# 函数1 :void SetId_666(ClassA a) { a.id = 666 ; }
C++函数1:void SetId_666(ClassA* a) { a->id = 666 ; }
C# 函数2 :void SetId_666(StructA a) { a.id = 666 ; }
C++函数2:void SetId_666(ClassA a) { a.id = 666 ; }
注2:C#中与C++中类class行为更接近的是结构体struct,而非类class。