c++ - 友元函数可以在不创建任何对象的情况下访问成员变量吗

标签 c++

继承类可以在不使用.(点)运算符的情况下访问成员变量。我们是否也可以在不使用带有对象名称的点运算符的情况下访问 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/

相关文章:

c++ - 为什么 MacOS clang 不能使用 C++17 std?

c++ - 有什么方法可以通过 Qt Designer 添加 QSystemTrayIcon

c++ - 我是否需要 "new"数组以便稍后执行 memset?在 C++ 中

c++ - Windows 上奇怪的文件加载时间

c++ - 使用父窗口的控件打开新窗口

c++ - 如何从 C++ 中的类返回结构?

c++ - 尝试将 unique_ptr 放入 map 时出现编译错误

c++ - 谷歌模拟 :Testing a Certain Property of an Object

c++ - 使用输出流创建的二进制输出文件的内容

android - 抽象方法的 C++ 实现不满足