在C++中,如何从一个类变成一个结构?
我经常看到人们问你如何从一个结构转换成一个类,但从来没有相反的方式。是因为它简单得多,还是因为另一个原因?假设你有一门系课,如下所示:在C++中,如何从一个类变成一个结构?,c++,C++,我经常看到人们问你如何从一个结构转换成一个类,但从来没有相反的方式。是因为它简单得多,还是因为另一个原因?假设你有一门系课,如下所示: class Department { private: int DepartmentID; string Departmentname; string DepartmentHeadName; public: Departments() { DepartmentID =
class Department {
private:
int DepartmentID;
string Departmentname;
string DepartmentHeadName;
public:
Departments() {
DepartmentID = 0;
Departmentname = "";
DepartmentHeadName = "";
}
Departments(int di, string dn, string dhn)
{
DepartmentID = di;
Departmentname = dn;
DepartmentHeadName = dhn;
}
void setdepartmentid(int di) {
DepartmentID = di;
}
int getdepartmentid() {
return DepartmentID;
}
void setDepartmentName(string dn) {
Departmentname = dn;
}
string getDepartmentName() {
return Departmentname;
}
void setDepartmentHeadname(string dhn) {
DepartmentHeadName = dhn;
}
string getDepartmentHeadname() {
return DepartmentHeadName;
}
};
你们被要求用部门结构来代替班级。你将如何处理这个问题?您是简单地删除类并用struct替换它,还是执行/尝试其他操作?是的,退出类并放置struct。C++结构与C结构有很大的不同。C结构仅仅是RAM中原始数据的集合。C++结构与C++类几乎是一样的。所以是的,若你们想把一个类转换成一个结构,你们只需要改变这个结构的类
[编辑]:正如@Gox所建议的,我必须补充一点,那就是有一个微小但重要的区别:默认级别的访问。在类中,默认级别的访问是私有的,除非您显式指定其他级别的访问。在结构中则相反,因为默认情况下所有内容都是公共的。我认为这可能是您需要的:
C++引物>将C++类转换为结构:-< /P> 步骤1:确保显式地为类的所有成员提供访问修饰符
步骤2:用struct替换类 你就完了< C++中结构和类之间唯一的区别是默认情况下,类的所有成员都是私有的,而结构的所有成员都是公共的。这就是为什么在转换之前,显式地提供访问修饰符是很重要的。我的意思是,您可以将关键字类更改为struct,这样编译起来仍然很好,但这实际上没有任何作用。你想在这里实现什么?结构和类是完全相同的,除了结构默认为公共访问,类默认为私有访问。可能的复制显然是错误的。结构允许继承很好。C++结构是不允许继承的类,嗯?什么它允许吗?。天啊!我的老师糟透了。我会检查一下,可惜有很多坏的C++老师在那里。主要是java或C程序员,他们假装知道C++。试着问他们是否知道右值引用是什么,或者std::optional是什么。我有C++老师,他们甚至不知道什么是引用。他显然是我的老师错了。明天我会喜欢这个,把这个帖子给他看。现在我将编辑我的答案。谢谢,真正的老师!