C++ 定义一个结构体,用class还是struct
在C++中,struct和class都可以用来定义结构体(Structures),它们之间的主要区别在于默认的访问权限和继承方式。
struct
默认访问权限:在struct中,成员变量的默认访问权限是public。
继承方式:继承默认是public的,即派生类可以访问基类的所有成员(除非显式改变访问权限)。
class
默认访问权限:在class中,成员变量的默认访问权限是private。
继承方式:继承默认是private的,即派生类默认不能直接访问基类的所有成员,除非显式改变访问权限。
使用场景
如果你希望你的结构体中的成员变量默认就是公开的,并且你不需要从该结构体派生其他类,那么使用struct可能更合适。
如果你希望你的结构体中的成员变量默认是私有的,或者你需要从这个结构体派生其他类,那么使用class可能更合适。
示例
使用struct
struct Person {std::string name; // 默认publicint age; // 默认public
};
使用class
class Person {
private: // 可以改为public,根据需要std::string name; // 默认privateint age; // 默认private
public:void setName(const std::string& n) { name = n; }std::string getName() const { return name; }void setAge(int a) { age = a; }int getAge() const { return age; }
};
总结
选择struct还是class主要取决于你的设计需求。如果你不需要从该结构体派生其他类,并且希望成员变量默认是公开的,那么使用struct。如果你需要私有成员或从该结构体派生其他类,那么使用class。在实践中,许多开发者倾向于使用struct来表示数据记录,而使用class来表示具有行为的对象。不过,这只是一种习惯,并非强制规则。