一文讲明白C++中的结构体Struct和类Class的区别以及使用场景
一文讲明白C++中的结构体Struct和类Class的区别以及使用场景
文章目录
- 一文讲明白C++中的结构体Struct和类Class的区别以及使用场景
- 一、C++中的结构体Struct
- 二、C++中的类Class
- 三、结构体Struct和类Class之间的区别以及各自使用场景
一、C++中的结构体Struct
在C++中,结构体(struct)是一种用于组合不同类型的数据成员的用户自定义数据类型。结构体允许你在一个单一的实体中存储多个不同类型的数据,并且可以根据需要自定义数据成员的布局和访问权限。下面是关于C++中结构体的详细解释:
(图片来源网络,侵删)- 1、声明结构体
你可以使用struct关键字来声明一个结构体。结构体的声明通常放在头文件或者全局命名空间中,以便在多个地方都可以使用。
struct Person { std::string name; int age; double height; };
- 2、结构体成员
在结构体中,你可以定义多种不同类型的成员变量,这些变量称为数据成员。成员可以是基本数据类型、自定义的结构体、指针、数组等。
struct Rectangle { double width; double height; }; struct Student { std::string name; int age; double grades[5]; Rectangle favoriteRectangle; };
- 3、结构体实例化
你可以像创建基本类型变量一样创建结构体变量。结构体的数据成员可以通过.运算符访问。
Person person1; person1.name = "Alice"; person1.age = 25; person1.height = 1.75;
- 4、默认访问权限
在结构体中,数据成员的默认访问权限是public,这意味着它们可以在结构体外部直接访问。
struct Point { double x; double y; }; int main() { Point p; p.x = 10.0; p.y = 5.0; return 0; }
- 5、成员函数
结构体也可以拥有成员函数,但它们的使用通常是限于简单的操作,而不是丰富的行为。成员函数在结构体内部声明和定义,可以访问结构体的数据成员。
struct Circle { double radius; double calculateArea() { return 3.14 * radius * radius; } }; int main() { Circle c; c.radius = 5.0; double area = c.calculateArea(); return 0; }
- 6、访问控制
C++11引入了结构体成员的访问控制修饰符(public、private、protected),允许你控制成员的访问权限。默认情况下,C++中的结构体成员是public的,但你也可以显式地指定不同的访问权限。
struct Example { int publicMember; // 默认是public private: int privateMember; public: void setPrivateMember(int value) { privateMember = value; } int getPrivateMember() { return privateMember; } };
总之,C++中的结构体是一种方便的数据组织方式,允许你将不同类型的数据组合在一起。虽然结构体的默认访问权限是public,但你也可以使用访问控制修饰符来更好地控制结构体成员的可见性。对于简单的数据封装和轻量级的数据结构,结构体是一个很好的选择。
二、C++中的类Class
在C++中,类(class)是一种重要的概念,用于创建用户定义的数据类型,可以包含数据成员和成员函数,以实现数据的封装和操作。类是面向对象编程的核心,允许将数据和操作封装在一起,以创建更加模块化和可维护的代码。下面是关于C++中类的详细解释:
- 1、类的声明和定义
类的声明通常在头文件(.h 或 .hpp)中,而类的成员函数的定义则在源文件(.cpp)中。这种分离使得代码的组织更加清晰。
// Person.h class Person { private: std::string name; int age; public: Person(const std::string &n, int a); void displayInfo(); };
// Person.cpp #include "Person.h" Person::Person(const std::string &n, int a) : name(n), age(a) {} void Person::displayInfo() { std::cout private: std::string name; public: Student(const std::string &n); ~Student(); }; private: double radius; public: Circle(double r); double calculateArea(); }; double Circle::calculateArea() { return 3.14 * radius * radius; } private: int privateMember; public: int publicMember; protected: int protectedMember; }; public: virtual double calculateArea(); }; class Rectangle : public Shape { private: double width; double height; public: Rectangle(double w, double h); double calculateArea() override; };
- 1、类的声明和定义
- 6、访问控制
- 5、成员函数
- 4、默认访问权限
- 3、结构体实例化
- 2、结构体成员
- 1、声明结构体