📜  C++中的类vs结构vs联合(1)

📅  最后修改于: 2023-12-03 15:29:54.621000             🧑  作者: Mango

C++中的类 vs 结构 vs 联合

概述

C++中的类、结构和联合都是用来封装数据和行为的方式。它们都可以包含各种类型的数据成员,方法和操作符。下面将分别介绍它们的特点。

类是一种复杂数据类型,可以包含一个或多个数据成员,方法和操作符。它们通常被用于构建对象,通过扩展方法实现对象的特定功能。C++中的类具有封装性,继承性和多态性。

在类中数据成员和操作符是默认为私有的,而方法和构造函数则可以是公有或私有的。类之间可以通过继承关系实现数据和行为的共享和扩展。类中的多态性使得程序员可以使用多个衍生类对象来代替基类对象。

下面是一个简单类的例子:

class Person{
private:
    string name;
    int age;
public:
    Person(string name, int age){
        this->name = name;
        this->age = age;
    }
    void show(){
        cout << "Name: " << name << endl;
        cout << "Age: " << age << endl;
    }
};

上面的例子中,Person类包括两个私有数据成员nameage,以及一个公有方法show,用于打印姓名和年龄。

结构

结构和类非常相似,它也可以包含一个或多个数据成员,方法和操作符。不同之处在于,在结构中默认情况下,数据成员和操作符是公有的,而方法默认是私有的。结构通常用于表示一组相关的数据,而不涉及到具体的操作。

下面是一个简单结构的例子:

struct Point{
    int x;
    int y;
};

上面的例子中,Point结构包括两个公有数据成员xy,用于表示二维平面上的点坐标。

联合

联合也是一种数据类型,类似于结构体。它可以包含一个或多个成员,不同之处在于在任何时刻只有一个成员处于活动状态。联合一般用于节省内存,例如,可以用联合来表示一个变量可能具有的多种数据类型。

下面是一个简单联合的例子:

union Number{
    int i;
    float f;
};

上面的例子中,Number联合包含两个成员if。当一个成员被激活时,另一个成员的值将被清零。

结论

类、结构和联合都是C++中的重要数据类型。它们之间有许多相似之处,但也有很多不同之处。应根据具体情况和需求选择最适合的数据类型。