普通函数可不可以直接访问private里面的变量
时间: 2023-11-11 08:06:44 浏览: 40
普通函数不能直接访问 private 成员变量,因为 private 成员变量只能在类内部访问,类外部的函数无法直接访问。
如果需要在类外部访问 private 成员变量,可以提供 public 成员函数来实现。例如,可以提供一个 public 成员函数来获取 private 成员变量的值:
```c++
class MyClass {
private:
int myVar;
public:
void setMyVar(int var) {
myVar = var;
}
int getMyVar() const {
return myVar;
}
};
```
在这个例子中,私有成员变量 myVar 被声明为私有,外部函数无法直接访问。但是,类提供了一个公共的 setMyVar() 函数,可以设置 myVar 的值,并提供了一个公共的 getMyVar() 函数,用于获取 myVar 的值。这样,在外部函数中就可以通过调用 setMyVar() 和 getMyVar() 函数来访问 myVar 的值了。
需要注意的是,如果在类定义中使用了 friend 关键字,可以允许某些函数访问 private 成员变量。但是,这种做法可能会破坏封装性原则,应该尽量避免使用。
相关问题
C++类函数里的变量可以互相访问吗
在C++中,类的成员函数可以直接访问该类的所有成员变量和成员函数,而不需要使用特殊的访问权限关键字(如public、private、protected等)。这是因为在类内部定义的成员函数默认是类的友元函数,它们可以访问类的私有成员。
例如,下面是一个简单的类示例:
```
class Rectangle {
private:
int length;
int width;
public:
void setLength(int l) {
length = l;
}
void setWidth(int w) {
width = w;
}
int getArea() {
return length * width;
}
};
```
在上面的示例中,setLength()、setWidth()和getArea()函数都可以直接访问类的私有成员length和width。
子类的成员函数可以访问父类的private
不可以。子类可以访问父类的public和protected成员,但不能访问父类的private成员。这是因为private成员只能在类内部访问,而子类只能访问父类的public和protected成员。如果子类需要访问父类的private成员,可以使用父类提供的public或protected成员函数来访问。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)