MST

星途 面试题库

面试题:C++中class与struct在访问控制上的基础差异

请简述C++中class与struct默认的访问控制权限分别是什么,并举例说明如何在class和struct中修改成员的访问控制,如将部分成员设置为私有(private)或保护(protected)访问权限。
12.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  • class默认访问控制权限
    • 在C++中,class默认的访问控制权限是private。即如果不明确指定访问修饰符,类中的成员(包括成员变量和成员函数)都是私有的,只能在类的内部被访问。
    • 例如:
class MyClass {
    int data; // 默认为private
public:
    void setData(int value) {
        data = value;
    }
    int getData() {
        return data;
    }
};

在此例中,data成员变量是私有的,只能通过类内部的setDatagetData函数访问。

  • struct默认访问控制权限
    • struct默认的访问控制权限是public。即如果不明确指定访问修饰符,结构体中的成员都是公共的,可以在结构体外部直接访问。
    • 例如:
struct MyStruct {
    int data; // 默认为public
};

这里data成员变量是公共的,可以在结构体外部直接访问:

int main() {
    MyStruct s;
    s.data = 10; // 直接访问
    return 0;
}
  • 在class和struct中修改成员访问控制
    • 在class中设置私有或保护成员
      • 可以使用privateprotected关键字来设置成员的访问权限。
      • 例如,将class中的部分成员设置为protected
class MyClass {
public:
    void publicFunction() {
        // 可以访问所有成员
    }
protected:
    int protectedData;
    void protectedFunction() {
        // 可以访问protected和private成员
    }
private:
    int privateData;
};
  • 在struct中设置私有或保护成员
    • 同样可以使用privateprotected关键字。
    • 例如,将struct中的部分成员设置为private
struct MyStruct {
public:
    void publicFunction() {
        // 可以访问所有成员
    }
private:
    int privateData;
};

在这个struct中,privateData是私有的,不能在struct外部直接访问。