前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C++】类的封装 ④ ( 访问控制权限 | struct 和 class 关键字定义类的区别 | 类的默认访问权限 | 类的默认继承方式 )

【C++】类的封装 ④ ( 访问控制权限 | struct 和 class 关键字定义类的区别 | 类的默认访问权限 | 类的默认继承方式 )

作者头像
韩曙亮
发布2023-10-15 16:52:54
发布2023-10-15 16:52:54
34900
代码可运行
举报
运行总次数:0
代码可运行

一、struct 和 class 关键字定义类的区别

1、struct 和 class 关键字作用

在 C++ 语言中 , 使用 struct 和 class 关键字 , 都可以 用于定义 类 , 这些被定义的类 都 具有相似的语法和功能 , 只是在默认情况下有一些不同的行为 ;

在 C 语言中 , 使用 struct 关键字 , 可以定义结构体 ; 没有 class 关键字 ;

2、类的默认访问权限

struct 和 class 关键字 定义的类 的 默认访问权限 不同 ,

  • 使用 struct 关键字 定义的类 , 成员的默认访问权限是 public , 可以在 类的内部 和 类的外部 访问 ;
  • 使用 class 关键字 定义的类 , 成员的默认访问权限是 private , 只能在 类的内部 访问 ;

下面的代码中 , 使用 struct 关键字 定义的 Student 类中的 成员变量 age 没有显式声明访问权限 , 其默认的成员的访问权限是 public , 可以在 类的外部 和 类的内部 访问 ;

代码语言:javascript
代码运行次数:0
运行
复制
struct Student {  
	// 默认的成员的访问权限是 public 
	// 可以在 类的外部 和 类的内部 访问 
    int age;
};  

下面的代码中 , 使用 class 关键字 定义的 Teacher 类中的 成员变量 age 没有显式声明访问权限 , 其默认的成员的访问权限是 private , 只能在 类的内部 访问 ;

代码语言:javascript
代码运行次数:0
运行
复制
class Teacher{  
	// 默认的成员的访问权限是 private
	// 只能在 类的内部 访问
    int age;
};

3、类的默认继承方式

struct 和 class 关键字 定义的类 的 默认 继承方式 不同 ,

  • 使用 struct 关键字 定义的类 , 成员的默认 继承方式是 public ;
  • 使用 class 关键字 定义的类 , 成员的默认 继承方式是 private ;

在 C++ 语言中 , 子类 继承 父类 时 可以获取父类的所有 属性 和 行为 ;

C++ 的 继承 可以通过使用冒号 : 和 访问修饰符 public / protected / private 来定义 ;

子类可以继承父类的 3 种方式 :

  • 公有继承 public : 子类 继承 父类的 公有成员 和 保护成员 , 可以将它们作为自己的公有成员和保护成员对外公开 ;
  • 保护继承 protected : 子类 继承 父类的 保护成员 , 子类可以访问父类中的保护成员 , 但不能访问父类中的公有成员 ;
  • 私有继承 private : 子类 继承 父类的 私有成员 ; 不能访问 父类的 公有 和 保护成员 ;

使用 struct 关键字 定义的类 , 成员的默认 继承方式是 public ,

代码语言:javascript
代码运行次数:0
运行
复制
// 默认是 public 继承  
struct Student : public Person { 
    // ...  
};  

使用 class 关键字 定义的类 , 成员的默认 继承方式是 private ;

代码语言:javascript
代码运行次数:0
运行
复制
// 默认是 private 继承  
class Teacher : private Person { 
    // ...  
};

4、struct 和 class 关键字 的 推荐用法

在实际开发中 , 推荐使用 class 关键字 定义 类 , 推荐使用 struct 关键字 定义 结构体 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、struct 和 class 关键字定义类的区别
    • 1、struct 和 class 关键字作用
    • 2、类的默认访问权限
    • 3、类的默认继承方式
    • 4、struct 和 class 关键字 的 推荐用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档