MST

星途 面试题库

面试题:C++类外访问非公有成员合法性基础判断

在C++中,有如下类定义:class MyClass { private: int privateVar; public: void setPrivateVar(int value) { privateVar = value; } int getPrivateVar() { return privateVar; } }; 假设在类外有一个函数,定义如下:void outsideFunction() { MyClass obj; // 此处尝试访问obj的privateVar成员,请问以下哪种访问方式是合法的,如果都不合法请说明原因。 A. obj.privateVar = 10; B. 通过obj.setPrivateVar(10);间接访问privateVar。
38.3万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 选项A:不合法。因为privateVarMyClass类的私有成员,在类外不能直接访问,obj.privateVar = 10;这种直接访问私有成员的方式违反了C++的访问控制规则。
  2. 选项B:合法。MyClass类提供了公共成员函数setPrivateVar,通过调用obj.setPrivateVar(10);可以间接设置私有成员privateVar的值,这符合C++的访问控制机制,即通过公共接口来访问私有成员。

所以答案是B。