C++学习笔记-类和结构体

在C++中,类(Class)是一种用户定义的数据类型,用于封装数据和对数据的操作。类是面向对象编程(OOP)的核心概念之一,允许你将数据和操作数据的方法组合在一起。

定义一个简单的类

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Player
{
public:
	int x, y;  // 成员变量
	int speed; // 成员变量

	// 成员方法
	void Move(int xa, int ya)
	{
		x += xa * speed;
		y += ya * speed;
	}
};

使用类:

1
2
3
4
5
6
7
8
int main()
{
	Player player; // 实例化Player类
	player.x = 0;  // 给类中的成员x赋值
	player.y = 0;  // 给类中的成员y赋值
	player.speed = 2; // 给类中的成员speed赋值
	player.Move(1, -1); // 调用类成员方法
}

总结

  1. 类只是对数据和功能组合在一起的一种方法
  2. 类可以让我们更好的组织代码,更符合语义,使我们的代码看起来更整洁。
  3. public关键字可以让类中的成员对外可见。一个类的成员默认是private(私有的)
  4. 类中的函数我们称为方法,类中的变量我们称为属性。
  5. 类的成员默认是private(私有的),而结构体的成员默认是public(公共的)
  6. 结构体在C++中继续存在的原因是它希望保持与C语言的兼容性。
  7. 那么什么时候使用结构体,什么时候使用类呢?

如果你使用POD类型的数据时,就尽可能的使用结构体struct,其他情况下就使用类吧。

什么时POD类型?

就是一种只有简单变量的结构,没有用户定义的构造函数、析构函数和复制赋值操作符,也没有虚函数和虚基类。一般像向量Vector这种就可以用结构体

POD类型的特性

  1. 内存布局连续且可预测:

POD类型的对象在内存中具有连续的布局,这使得它们非常适合用于与硬件、网络通讯或与C语言库的接口。

  1. 与C语言兼容

由于POD类型的内存布局与C语言的结构体兼容,因此它们可以在C++和C之间进行无缝的数据交换。

  1. 可通过内存复制操作进行复制和序列化

POD类型的对象可以通过简单的内存复制操作(如memcpy)进行复制和序列化,这使得它们在处理大量数据时非常高效。说白了就是些简单的数据结构就可以用结构体。

updatedupdated2025-03-032025-03-03