面试题答案
一键面试- class默认成员访问权限:
- 在
class
中,默认的成员访问权限是private
。这意味着类的成员变量和成员函数在没有明确指定访问修饰符(如public
、protected
)时,它们只能在类的内部被访问,外部代码无法直接访问。 - 示例:
- 在
class MyClass {
int data; // 默认为private
public:
void setData(int value) {
data = value;
}
int getData() {
return data;
}
};
int main() {
MyClass obj;
// obj.data = 10; // 错误,data是private,不能在类外部访问
obj.setData(10);
int value = obj.getData();
return 0;
}
- struct默认成员访问权限:
- 在
struct
中,默认的成员访问权限是public
。这意味着类的成员变量和成员函数在没有明确指定访问修饰符时,它们可以在类的外部直接访问。 - 示例:
- 在
struct MyStruct {
int data; // 默认为public
};
int main() {
MyStruct obj;
obj.data = 10; // 正确,data是public,可以在类外部访问
return 0;
}
这种差异在类定义和使用时,class
更强调数据的封装性,默认将成员隐藏起来,通过提供public
的接口函数来访问和修改数据;而struct
在C++中保留了C语言中结构体数据成员直接暴露的特性,在一些简单的数据聚合场景下使用起来更方便,但相对缺乏封装性。