我们的教材大致是说,在c++ 中struct和class的不同在于访问控制符上的默认值不同。仅仅是这个深度而已。
访问控制符上的处理不同,是因为c++要与c在使用struct时保持兼容性。
在c++中,struct在c语言中的使用方式不仅仅被保留下来,同时还赋予了新的特性。见下列代码:
#include <iostream>
using namespace std;
struct Test{
public:
Test(){
value = 10;
}
void display(){
cout << "this is struct." << endl;
}
private:
int value;
};
class DrivedTest: public Test{
public:
void display(){
//Test::display();
cout << "this is class." << endl;
}
};
void main()
{
Test test;
DrivedTest dtest;
test.display();
dtest.display();
}
可以看到,struct支持使用访问控制符、支持构造函数、支持析构函数(未显式给出)、支持继承、支持派生。
在C++的范畴讨论struct和class的区别的话,我想“他们只是拼写不同,其他的都相同”这个结论是正确的。