c++中,结构体是稍有不同的类,类能做的,结构体也可以;
而swift中,结构体与类有较大区别,
结构体与类的区别:
1、结构体不可以继承;
2、结构体没有析构器,结构体实例和所有的值类型变量一样,内存自动分配、自动释放,由操作系统管理,不由程序员控制;
3、类采用自动引用技术机制来管理资源;
4、类可以进行类型检查和类型转换。
结构体和枚举是值类型(包括所有的基本类型都是值类型),类是引用类型,引用类型定义了一个实例进行赋值、
或者作为参数传递给函数时,值不会拷贝,只是引用,任何改变都会影响原来的实例。值类型和引用类型的常量是有区别的,
值类型常量,不可以修改属性,不可以赋值新的实例;引用类型常量,可以修改属性,不可以赋值新实例。
在c++中,没有引用类型,默认都是值类型,除非是有意为之。(将拷贝构造函数和赋值运算符声明为私有类型,显示定义构造函数和虚析构函数)
c++有访问类型public、private、pretected,swift也有访问控制,但是和c++的有很大不同,默认情况下,是internal内部访问控制级别,在同一模块内可以直接访问属性和方法,也即可以直接对属性赋值。
由于有引用类型的概念,swift提供了等价于“===”、不等价于“!==”运算符,用于检测两个常量或变量是否引用同一实例。