C++中定义结构体使用struct关键字,可组合不同类型数据,支持成员函数、构造函数及嵌套结构体,struct与class区别主要在默认访问权限,通常struct用于数据封装,class用于复杂行为抽象。

C++中定义结构体,核心就是使用
struct
说起
struct
struct
比如,我们要表示一个三维空间中的点,它有x、y、z三个坐标:
struct Point3D {
double x;
double y;
double z;
};定义好这个结构体后,你就可以像使用内置类型(比如
int
double
立即学习“C++免费学习笔记(深入)”;
Point3D myPoint; // 声明一个Point3D类型的变量
myPoint.x = 10.0; // 通过点运算符访问并赋值成员
myPoint.y = 20.5;
myPoint.z = 30.0;
// 也可以在声明时进行初始化,C++11及以后支持更简洁的列表初始化
Point3D anotherPoint = {1.0, 2.0, 3.0};
Point3D yetAnotherPoint{4.0, 5.0, 6.0}; // 更现代的写法这里有个小细节,在C语言里,你声明结构体变量时可能需要写
struct Point3D myPoint;
struct
Point3D myPoint;
struct
class
这个问题,我个人觉得是C++初学者最常感到困惑的地方之一。技术上讲,在C++里,
struct
class
struct
public
class
private
那么,既然功能上几乎一样,为什么还要分
struct
class
struct
class
struct
class
当然可以!这正是C++
struct
struct
struct
struct
我们拿之前的
Point3D
#include <cmath> // 需要用到sqrt和pow函数
struct Point3D {
double x;
double y;
double z;
// 构造函数:在创建Point3D对象时自动调用,用于初始化成员
Point3D(double initialX, double initialY, double initialZ) {
x = initialX;
y = initialY;
z = initialZ;
}
// 成员函数:计算点到原点的距离
double distanceFromOrigin() const { // const表示这个函数不会修改成员变量
return std::sqrt(x * x + y * y + z * z);
}
};
// 使用示例
// Point3D p1; // 错误:现在有了自定义构造函数,必须提供参数
Point3D p1(1.0, 2.0, 3.0);
double dist = p1.distanceFromOrigin(); // 调用成员函数
// std::cout << "Distance from origin: " << dist << std::endl;你看,有了构造函数,我们创建对象时就更方便了,可以直接传入初始值。而成员函数则让操作结构体数据变得更加内聚和直观。
有时候,我们的数据结构会比较复杂,需要在一个结构体内部再定义另一个结构体。这在C++中是完全允许的,我们称之为嵌套结构体。这就像一个大盒子里面又放了几个小盒子,每个小盒子也装着它自己的东西。这种方式非常适合表示具有层级关系的数据。
想象一下,我们要定义一个表示“线段”的结构体,一条线段由两个点组成(起点和终点)。我们可以这样来定义:
struct Point { // 先定义一个简单的点结构体
int x;
int y;
};
struct LineSegment { // 定义线段结构体
Point startPoint; // 嵌套Point结构体作为成员
Point endPoint; // 另一个Point结构体成员
int id; // 线段的ID
};
// 使用示例
LineSegment myLine;
myLine.id = 101;
myLine.startPoint.x = 0; // 访问嵌套结构体的成员
myLine.startPoint.y = 0;
myLine.endPoint.x = 10;
myLine.endPoint.y = 20;
// 也可以在初始化时嵌套初始化
LineSegment anotherLine = {{1, 1}, {5, 5}, 102}; // 注意大括号的层级通过这种方式,我们可以非常清晰地组织复杂的数据结构。访问嵌套结构体的成员时,只需要连续使用点运算符(
.
myLine.startPoint.x
以上就是C++结构体如何定义 struct关键字基本语法的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号