一、struct 和 class 关键字定义类的区别
1、struct 和 class 关键字作用
在 C 语言中 , 使用 struct 和 class 关键字 , 都可以 用于定义 类 , 这些被定义的类 都 具有相似的语法和功能 , 只是在默认情况下有一些不同的行为 ;
在 C 语言中 , 使用 struct 关键字 , 可以定义结构体 ; 没有 class 关键字 ;
2、类的默认访问权限
struct 和 class 关键字 定义的类 的 默认访问权限 不同 ,
- 使用 struct 关键字 定义的类 , 成员的默认访问权限是 public , 可以在 类的内部 和 类的外部 访问 ;
- 使用 class 关键字 定义的类 , 成员的默认访问权限是 private , 只能在 类的内部 访问 ;
下面的代码中 , 使用 struct 关键字 定义的 Student 类中的 成员变量 age 没有显式声明访问权限 , 其默认的成员的访问权限是 public , 可以在 类的外部 和 类的内部 访问 ;
代码语言:javascript复制struct Student {
// 默认的成员的访问权限是 public
// 可以在 类的外部 和 类的内部 访问
int age;
};
下面的代码中 , 使用 class 关键字 定义的 Teacher 类中的 成员变量 age 没有显式声明访问权限 , 其默认的成员的访问权限是 private , 只能在 类的内部 访问 ;
代码语言:javascript复制class Teacher{
// 默认的成员的访问权限是 private
// 只能在 类的内部 访问
int age;
};
3、类的默认继承方式
struct 和 class 关键字 定义的类 的 默认 继承方式 不同 ,
- 使用 struct 关键字 定义的类 , 成员的默认 继承方式是 public ;
- 使用 class 关键字 定义的类 , 成员的默认 继承方式是 private ;
在 C 语言中 , 子类 继承 父类 时 可以获取父类的所有 属性 和 行为 ;
C 的 继承 可以通过使用冒号 :
和 访问修饰符 public
/ protected
/ private
来定义 ;
子类可以继承父类的 3 种方式 :
- 公有继承 public : 子类 继承 父类的 公有成员 和 保护成员 , 可以将它们作为自己的公有成员和保护成员对外公开 ;
- 保护继承 protected : 子类 继承 父类的 保护成员 , 子类可以访问父类中的保护成员 , 但不能访问父类中的公有成员 ;
- 私有继承 private : 子类 继承 父类的 私有成员 ; 不能访问 父类的 公有 和 保护成员 ;
使用 struct 关键字 定义的类 , 成员的默认 继承方式是 public ,
代码语言:javascript复制// 默认是 public 继承
struct Student : public Person {
// ...
};
使用 class 关键字 定义的类 , 成员的默认 继承方式是 private ;
代码语言:javascript复制// 默认是 private 继承
class Teacher : private Person {
// ...
};
4、struct 和 class 关键字 的 推荐用法
在实际开发中 , 推荐使用 class 关键字 定义 类 , 推荐使用 struct 关键字 定义 结构体 ;