第一点:
在C++中,结构体和类都可以用来定义自定义数据类型,
它们之间的主要区别在于默认的访问控制和成员变量的默认初始化方式。
结构体:
- 结构体的成员变量默认为public访问权限。
- 结构体的成员变量默认为公共可见的,可以直接通过结构体实例对象来访问和修改。
- 结构体通常用于组织和存储相关的数据,不包含复杂的行为和方法。
类:
- 类的成员变量默认为private访问权限。
- 类的成员变量默认为私有可见的,只能通过类的成员函数来访问和修改。
- 类可以包含成员函数,用于定义类的行为和操作。
- 类可以使用继承、多态等特性,具有更强大的抽象能力和代码组织能力。
因此,当你只需要简单地组织和存储数据时,可以使用结构体。
而当你需要更复杂的行为和方法时,应该使用类。
第二点:
结构体也可以显式地使用访问控制关键词,如果你声明的变量或方法没有写在任何访问控制关键词下,那么默认为public。
struct MyStruct {
private:
int privateVar;
public:
int publicVar;
private:
void privateFunc() {
// 私有函数的实现
}
public:
void publicFunc() {
// 公共函数的实现
}
};
而如果你在一个类中同样将一个成员变量,放在访问控制关键词外面,默认则是private。
class Person {
int age; // 私有成员,默认为private
public:
void setAge(int a) {
age = a;
}
void display() {
cout << "Age: " << age << endl;
}
};
private的意思是,该成员变量只能在该类的内部定义中使用,如果你的类对象在别的类的代码中,就无法直接调用了。