继承类可以在不使用.(点)运算符的情况下访问成员变量。我们是否也可以在不使用带有对象名称的点运算符的情况下访问 friend 类中的成员变量。如果不是,为什么?
void show();
class Test{
int a;
friend void show();
}
void show(){
cout<<a; //why this is not possible
}
int main(){
show();
}
最佳答案
你不能做这样的事。当你有一个成员函数时,即使在一个继承的类中,编译器也隐式地必须给函数一个隐式的 this
参数,即使你不是自己写的,它也是他们的。
另一方面,友元函数不是类的一部分,因此它无权访问它。
同样从逻辑上讲,如果没有类的对象,您就没有任何包含该成员的内存,因此您无法访问它。
关于c++ - 友元函数可以在不创建任何对象的情况下访问成员变量吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47374776/