OC中 定义结构体,MyTest 可省略,结构体类型名为 Test
typedef struct MyTest
{
int a;
int b;
}Test;
typedef相当于给结构类型struct MyTest 指定了一个新名称 Test
Test t = {1,2}; 等同于 struct MyTest t2 = {2,3};
使用时都可用点方法 t.a=2; t2.b=4;
在c++中如果用typedef的话,又会造成区别:
struct MyTest
{
int a;
int b;
}test1;//test1是一个变量
typedef struct MyTest2
{
int a;
int b;
}Test2;//Test2是一个结构体类型=struct MyTest2
使用时可以直接访问test1.a
但是Test2则必须先 Test2 t2;
然后 t2.a=10;
oc中结构体和类的区别:
1.结构体只能封装属性,类却不仅可以封装属性也可以封装方法
2.结构体变量分配在栈,而OC对象分配在堆,栈的空间相对于堆来说是比较小的,但是存储在栈中的数据访问效率相对于堆而言是比较高
3.赋值 :结构体是(拷贝),对象之间是(地址)
使用结构体的时候最好是属性比较少的结构体对象如果属性较多的话就要使用类了
c++中结构体和类区别:默认的继承访问权限,struct是public的,class是private的。
网友评论