10

❤️学妹竟然问struct和class的区别❤️,我一篇文讲的明明白白!

 3 years ago
source link: https://blog.csdn.net/nyist_zxp/article/details/119021355
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
❤️学妹竟然问struct和class的区别❤️,我一篇文讲的明明白白!_Linux猿-CSDN博客
同时被 2 个专栏收录
24 篇文章 31 订阅

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 关注专栏:C/C++面试通关集锦(优质好文持续更新中……)🚀


绝大多数的人对 struct 和 class 都是很熟悉的,那它们之间有什么区别呢?我想很多人并没有深入的了解过这个,这篇文章就来分析一下!

首先,注意本文讨论的是 C++ 中 struct 和 class 的区别,因为 C 中 struct 和 class 的区别已经很明显了!

先说下 C++ 中 struct 相比于 C 中增加了哪些功能。

(1)struct 中可以使用 public、private、protected等属性,和 C++ 一样。

编译后输出结果为:

从例子中可以看到 struct 在 C++ 中是可以添加 public、private、protected的。在纯 c 语言环境下是会出错的。

(2)struct 中可以添加方法

编译后输出结果为:

(3)struct 可以继承等属性

编译后输出结果为:

从上面可以看到,在C++中,struct 已经和 class 基本相同了。那为什么还要保留 struct 呢,因为 C++ 是要兼容 C的,毕竟是 c plus plus 。

那下面来具体看看 struct 和 class 有哪些不同:

(0)定义上不同

struct 是各种数据类型的组合,是一种复合数据类型,class 是一个对象的方法和属性的集合,更注重数据的安全性。

(1)默认的访问属性不同

struct 默认的访问属性是 public,class 默认的访问属性是 private

编译后会出错,如下所示:

可以看到,obj1.x 的使用并没有出错,而 obj2.y 出错,显示该变量是私有的。

(2)默认的继承方式不同

struct 默认的继承方式是 public,class 默认的继承方式是 private。

编译后出错,如下所示:

可以看到,obj2.z 是私有的。

总结

在 C++ 中通常更推荐使用 class,数据安全性更高,struct 一般是作为不同类型的合集。


🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK