C++ 中结构体和类的区别
本文解释了 C++ 中结构体和类之间的区别。 本文是针对最新版本的 C++ 编写的; 旧版本中的结构和类之间存在更多限制和差异。
在大多数情况下,结构与类非常相似,但差异很少。 让我们一一看看。
C++ 中的 struct 与 class 关键字
结构体是使用 struct 关键字声明的,而 class 关键字用于声明类。
类的语法:
class demo
{
private:
private members....
public:
public members....
};
结构体的语法:
struct demo
{
members1;
members2;
...
};
C++ 中类与结构中的访问修饰符
C++ 中的类和结构体具有 public、private 和 protected 三种访问说明符,但在 C++ 中,结构体的成员默认为 public,类的成员默认为 private。
使用类的示例代码:
#include <bits/stdc++.h>
using namespace std;
class demo {
int temp;
};
int main()
{
demo d;
d.temp = 20;
}
输出:我们收到编译错误,因为临时变量是私有的。
[Error] int demo::temp is private
[Error] within this context
使用结构体的示例代码:
#include <bits/stdc++.h>
using namespace std;
struct demo {
int temp;
};
int main()
{
demo d;
d.temp = 20;
cout<<d.temp;
}
输出:
20
C++ 中类与结构体的内存分配
每当创建和实现结构体时,都会在堆栈区域中分配内存,但在创建和实现类时,会在堆区域中分配内存。
C++ 中类中的空值与结构体中的空值
结构体成员不能为空值,而类成员可以为空值。
类中的值类型与引用类型与 C++ 中的结构体
在 C++ 中,结构是值类型,类是引用类型。 值类型将其内容存储在堆栈中,并且它们直接保存声明它们的值,因此每当创建结构体变量时,该变量都直接包含该结构体的数据。
但对于引用类型的类,每当创建对象时,它都会保存对该对象的引用而不是数据。
C++ 中类与结构的安全性
安全性是结构的一个主要问题,因为我们无法隐藏最终用户的实现细节,但设计细节可以很容易地隐藏在类实现中。
让我们以表格形式总结一下差异。
结构体 | 类 |
---|---|
使用 struct 关键字来定义结构。 | 使用class关键字来定义一个类。 |
不太安全。 | 更安全,因为可以对最终用户隐藏实现。 |
内存分配在栈区。 | 内存分配在堆区域中。 |
成员不能有空值。 | 成员可以有空值。 |
访问修饰符默认是公共的。 | 访问修饰符默认是私有的。 |
结构是一种值类型。 | 类是引用类型。 |
相关文章
Arduino 复位
发布时间:2024/03/13 浏览次数:315 分类:C++
-
可以通过使用复位按钮,Softwarereset 库和 Adafruit SleepyDog 库来复位 Arduino。
Arduino 的字符转换为整型
发布时间:2024/03/13 浏览次数:181 分类:C++
-
可以使用简单的方法 toInt()函数和 Serial.parseInt()函数将 char 转换为 int。
Arduino 串口打印多个变量
发布时间:2024/03/13 浏览次数:381 分类:C++
-
可以使用 Serial.print()和 Serial.println()函数在串口监视器上显示变量值。