只是为了消除一些人的困惑!而且采摘方便!这里有几点!
在结构中!您可以拥有封装和可见性运算符(私有或公共)!就像你上课一样!
因此,有人说或您可能在网上找到的说法是:其中一个区别是结构没有可见性运算符和隐藏数据的能力,这是错误的!
您可以像在类中一样拥有方法!
运行下面的代码!你可以检查它是否编译得很好!并且运行良好!整个结构就像class一样工作!
主要区别在于可见性模式的默认设置!
结构公开!默认情况下为私人课程!
#include<iostream>
#include<string>
using namespace std;
int main(int argv, char * argc[]) {
struct {
private:
bool _iamSuperPrivate = true;
void _sayHallo() {
cout << "Hallo mein Bruder!" << endl;
}
public:
string helloAddress = "";
void sayHellow() {
cout << "Hellow!" << endl;
if (this->helloAddress != "") {
cout << this->helloAddress << endl;
}
this->_sayHallo();
}
bool isSuperPrivateWorking() {
return this->_iamSuperPrivate;
}
} testStruct;
testStruct.helloAddress = "my Friend!";
testStruct.sayHellow();
if (testStruct.isSuperPrivateWorking()) {
cout << "Super private is working all well!" << endl;
} else {
cout << "Super private not working LOL !!!" << endl;
}
return 0;
}
在记忆中他们是一样的!
我没有检查自己!但有人说,如果你做同样的事情!编译后的汇编代码在结构和类之间是一样的!(被检查!)
参加任何课程并将名称更改为typedef struct!您会看到代码仍然可以正常工作!
class Client {
}
Client client(...);
=>
typedef struct Client {
....
} Client;
Client client(...);
如果你这样做,一切都会一样!至少我知道在 gcc 中会这样做!
你可以测试!在您的平台上!