类和对象一封装一c++中class和struct的区别

简介: 类和对象一封装一c++中class和struct的区别

在C++中,class和struct都是用于定义用户自定义数据类型的关键字。虽然它们在语法上非常相似,但在使用上存在一些微妙的差异。这些差异主要体现在默认访问修饰符、继承方式以及使用习惯上。

 

默认访问修饰符:

 

class:默认的成员访问权限是private。

struct:默认的成员访问权限是public。

这意味着,如果你在一个class中定义了一个成员变量或成员函数,而没有明确指定其访问权限,那么它将是private的。而在struct中,同样的成员将默认是public的。

image.png

继承方式:

 

当我们谈论继承时,class和struct的默认继承方式是不同的。class的默认继承方式是private,而struct的默认继承方式是public。

这意味着,如果你从一个class继承,并且没有指定继承方式,那么基类中的public和protected成员在派生类中将成为private。而从struct继承时,这些成员将保持其原有的访问权限。

 

image.png

image.png

使用习惯:

 

尽管class和struct在语法上有所不同,但在实际使用中,很多开发者并不严格遵守这些规则。有些团队或项目可能更倾向于始终使用class来定义类型,无论其内部成员是public还是private。

在某些情况下,struct可能更常用于表示一组相关的数据(例如,点的坐标或矩形的尺寸),而class可能更常用于表示具有行为(即方法)和状态(即数据成员)的复杂对象。

不过,这只是一种习惯或约定,并不是语言规定的硬性规则。

 

总的来说,class和struct在C++中都是非常重要的关键字,它们提供了封装数据和行为的方式。尽管它们在默认访问修饰符和继承方式上有所不同,但在实际使用中,这些差异通常不会成为主要的关注点。更重要的是,开发者应该选择最适合其需求和习惯的方式来定义和使用这些类型。

目录
相关文章
|
1月前
|
编译器 C++
C++之类与对象(完结撒花篇)(上)
C++之类与对象(完结撒花篇)(上)
35 0
|
9天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
37 4
|
10天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
34 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
23 4
|
1月前
|
存储 安全 C++
【C++打怪之路Lv8】-- string类
【C++打怪之路Lv8】-- string类
21 1
|
1月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
17 0
|
1月前
|
编译器 C++ 数据库管理
C++之类与对象(完结撒花篇)(下)
C++之类与对象(完结撒花篇)(下)
31 0
|
1月前
|
编译器 C++
C++之类与对象(3)(下)
C++之类与对象(3)(下)
32 0
|
1月前
|
存储 编译器 C++
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++类和对象(下)】——我与C++的不解之缘(五)