C++ class和struct的区别?

C++ 中保留了C语言的struct关键字,并且加以扩充。在C语言中,struct 只能包含成员变量,不能包含成员函数。而在C++中,struct 类似于 class,既可以包含成员变量,又可以包含成员函数。

struct能包含成员函数吗? 能!

struct能继承吗? 能!!

struct能实现多态吗? 能!!!
#include <iostream>
using namespace std;

struct A
{
public:
    A() { cout << "A construct..." << endl;}
    virtual ~A(){ cout << "A deconstruct..." << endl;}
};

struct B: public A
{
public:
    B() { cout << "B construct..." << endl;}
    ~B(){ cout << "B deconstruct..." << endl;}
};

int main()
{
    A *a = new B();
    delete a;
    return 0;
}
// A construct...
// B construct...
// B deconstruct...
// A deconstruct...

C++中的 struct 和 class 基本是通用的,唯有几个细节不同:

使用 class 时,类中的成员默认都是 private 属性的;而使用 struct 时,结构体中的成员默认都是 public 属性的。
class 继承默认是 private 继承,而 struct 继承默认是 public 继承。
class 可以使用模板,而 struct 不能。

C++ 没有抛弃C语言中的struct关键字,其意义就在于给C语言程序开发人员有一个归属感,并且能让C++编译器兼容以前用C语言开发出来的项目。

在编写C++代码时,我强烈建议使用 class 来定义类,而使用 struct 来定义结构体,这样做语义更加明确。

相关推荐