📜  c++ struct vs class - C++ (1)

📅  最后修改于: 2023-12-03 14:59:47.400000             🧑  作者: Mango

C++中的struct与class的区别

在C++中,struct和class是两种用于定义自定义数据类型的关键字。虽然在一定程度上它们是相似的,但两者之间仍有很大的区别。本篇文章将介绍这些区别,以便让程序员在实现代码时做出合适选择。

区别1: 默认访问权限

在struct中,所有的成员默认是public的,而在class中,所有的成员默认是private的。

例如:

struct MyStruct {
    int x;
};

class MyClass {
    int y;
};

这意味着,在struct中,所有成员都可以直接访问,而在class中,只有class的成员函数可以访问数据成员。因此,当类的成员变量需要在外部进行访问时,首选struct。

区别2:继承

在C++中,继承从来没有被定义在struct上,而是在class上。因此,使用class定义一个类更为合适,因为它可以使用继承,而struct不能。

例如:

class MyBaseClass {
    // ...
};

class DerivedClass : public MyBaseClass {
    // ...
};
区别3:定义构造函数

C++中的class可以拥有构造函数和析构函数,而struct不行。这意味着,class可以使用特殊的成员函数在创建和销毁对象时执行特定的任务。

例如:

class MyClass {
public:
    MyClass() {
        // Constructor code here 
    }
    
    ~MyClass() {
        // Destructor code here 
    }
};
结论

当在C++中定义自定义数据类型时,struct和class都是有效的选择。但在实际应用中,结构体通常用于简单的数据存储,而类则用于更复杂的问题。如果需要在定义的数据类型中进行继承或创建构造函数,那么使用类就更为合适。

因此,无论你使用struct还是class定义你的数据类型,都应该根据实现的需求来决定它们之间的区别。

参考资料:cplusplus.com