MST

星途 面试题库

面试题:C++中class与struct在默认访问权限上的差异

在C++中,简述class与struct默认的成员访问权限分别是什么,并举例说明这种差异在类定义和使用时的表现。
22.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. class默认成员访问权限
    • class中,默认的成员访问权限是private。这意味着类的成员变量和成员函数在没有明确指定访问修饰符(如publicprotected)时,它们只能在类的内部被访问,外部代码无法直接访问。
    • 示例
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;
}
  1. struct默认成员访问权限
    • struct中,默认的成员访问权限是public。这意味着类的成员变量和成员函数在没有明确指定访问修饰符时,它们可以在类的外部直接访问。
    • 示例
struct MyStruct {
    int data; // 默认为public
};
int main() {
    MyStruct obj;
    obj.data = 10; // 正确,data是public,可以在类外部访问
    return 0;
}

这种差异在类定义和使用时,class更强调数据的封装性,默认将成员隐藏起来,通过提供public的接口函数来访问和修改数据;而struct在C++中保留了C语言中结构体数据成员直接暴露的特性,在一些简单的数据聚合场景下使用起来更方便,但相对缺乏封装性。