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 来定义结构体,这样做语义更加明确。