在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++老师,他们甚至不知道什么是引用。他显然是我的老师错了。明天我会喜欢这个,把这个帖子给他看。现在我将编辑我的答案。谢谢,真正的老师!