C++的struct和class的区别

这篇具有很好参考价值的文章主要介绍了C++的struct和class的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. C++的struct和class的区别

差异特性 struct class
成员访问范围 默认public 默认private
继承关系访问范围 默认public 默认private
{}初始化 1、纯数据或纯数据+普通方法的结构体支持;2、带构造函数或虚方法的结构体不支持 不支持

1.1 成员访问范围的差异

1. struct
struct Person {
   
    int age;
}
Person person = new Person();
person.age = 12;

可以正常的编译和执行。

2. class
class Person {
   
    int age;
}
Person person = new Person();
person.age = 12; // 编译出错,应改为public int age;

【扩展】如果不增加public关键字,又想在某个类如ClassA中能访问到这个Person类中的成员,可以通过友元类(friend class Xxx)来将Person中的private和protected的成员共享出去。
Person类可以这么编写:

struct Person {
   
   	 friend class ClassA;
     int age;
}
Person person = new Person();
person.age = 12;

在ClassA中,就可以访问Person中的所有成员了。

void ClassA:setAge() {
   
	Person *person = new Person();
	person->age = 12;
}

关于友元类的使用,可见c++论坛:https://cplusplus.com/forum/beginner/147733/

1.1 继承关系访问范围的差异

指的是子对象是否可访问到父对象中的成员。文章来源地址https://www.toymoban.com/news/detail-704517.html

1. struct : struct
struct SBase {
   
public:
    int age = 0;
    SBase() = default;
    virtual ~SBase() = default;
};

struct Person : SBase {
   
public:
    Person() = default;
    virtual ~Person() = default;
};

int main(int argc, const char **argv)
{
   
    Person* child = new Person();
    child->age 

到了这里,关于C++的struct和class的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust 数据类型 之 结构体(Struct)

    目录 结构体(Struct) 定义与声明 结构体定义 结构体实例 结构体分类 单元结构体(Unit Struct) 元组结构体(Tuple Struct) 具名结构体(Named Struct) 结构体嵌套 结构体方法 例1:结构体转换为字符串描述 例2:矩形的周长和面积 例3:结构体字段的更新与输出 关联函数 结构体

    2024年02月16日
    浏览(48)
  • C++数据结构:图结构入门

    线性顺序表(数组) 线性顺序表(链表) Python风格双向链表的实现 散列表简单实现(hash表) 栈和队列的应用 二叉树之一(数组存储) 二叉树之二(二叉搜索树) 二叉树之三(二叉搜索树扩展) 图结构入门 前面系列文章介绍了线性结构和树形结构,线性结构的前驱与后续

    2024年02月07日
    浏览(37)
  • 【C语言】学数据结构前必学的结构体struct详细

    佛祖说,他可以满足程序猿一个愿望。程序猿许愿有生之年写出一个没有bug的程序,然后他得到了永生。 目录 1、结构体的声明与定义 1.1结构体是什么? 1.2为什么要有结构? 1.3结构体的声明 1.4结构体成员类型 1.5结构体变量定义和初始化 2、结构体成员的访问 3、结构体传参

    2024年02月11日
    浏览(59)
  • C++ 数据结构

    C/C++ 数组允许定义可存储相同类型数据项的变量,但是结构是 C++ 中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。 结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性: Title :标题 Author :作者 Subject :

    2024年01月21日
    浏览(53)
  • c++基础数据结构

    基础数据结构 目录 • 线性结构 • 二叉堆 • 并查集 • 哈希表 • 应用举例 一、线性结构 基础知识 • 数组 • 带头结点的双链表 – He a d 结点 : 虚拟头结点 – Fir s t 结点 : 第一个有实际内容的结点 • 队列 : 循环队列与 Open-Close 表 例 1. 最小值 • 实现一个 n 个元素的线性

    2024年02月10日
    浏览(36)
  • c++基本数据结构

    线性表可以用普通的一维数组存储。 你可以让线性表可以完成以下操作(代码实现很简单,这里不再赘述): 返回元素个数。 判断线性表是否为空。 得到位置为 p 的元素。 查找某个元素。 插入、删除某个元素:务必谨慎使用,因为它们涉及大量元素的移动。 (1) 单链表:

    2023年04月14日
    浏览(27)
  • 数据结构——栈(C++实现)

    今天我们来看一个新的数据结构—— 栈 。 栈是一种基础且重要的数据结构,它在计算机科学和编程中扮演着核心角色。栈的名称源于现实生活中的概念,如一叠书或一摞盘子,新添加的物品总是放在顶部,而取出物品时也总是从顶部开始。这种后进先出(Last In, First Out, L

    2024年04月29日
    浏览(42)
  • C++数据结构--红黑树

    红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因而是接近平衡的。如图所示: 每个结点不是红色就是黑色。

    2024年02月09日
    浏览(45)
  • 数据结构——队列(C++实现)

    目录 队列的概念及结构  队列的实现 队列的代码实现 完整的源文件代码 总结 推荐题目巩固知识 队列:只允许在一端进行插入数据操作,在另一端进行删除操作的特殊线性表,队列最重要的特性是 先进先出 (First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列

    2024年02月07日
    浏览(40)
  • C++:【数据结构】哈希表

    哈希表(hash table)又叫散列表,是一种很实用的数据结构。首先来看一下百度给出的定义:散列表,是 根据关键码值(Key value)而直接进行访问的数据结构 。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放

    2024年02月03日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包