c++ - 友元函数

标签 c++ friend

Friend Functions 下的例子为例
以下如何为真?

“请注意,无论是在 duplicate() 的声明中还是在其后来在 main() 中的使用中,我们都没有考虑 duplicate 类 CRectangle 的成员。它不是!它只是可以访问其私有(private)和 protected 成员而无需被成员(member)。”

重复声明在 CRectangle 的公共(public)部分。为什么它不是成员函数而 set_values 是?

这是一个很好的例子吗?如果没有,还有更好的吗?

最佳答案

Pavel 的回答是对你问题的直接回答,但我想你可能不清楚友元函数的用途,所以我想我会举一个常见的例子。

友元函数的一个常见用途是重载流运算符,其中特定运算符需要访问(或通过访问来促进)对象的私有(private)成员。即:

class Rectangle
{
...
    friend ostream &operator<<(ostream &stream, Rectangle r);
private:
    int width;
    int height;
};

friend ostream &operator<<(ostream &stream, Rectangle r)
{
    return (stream << "{" << width << ", " << height << "}");
}

在这种情况下,友元函数允许我们访问私有(private)数据进行打印,而无需为数据编写“获取”方法。也许这有助于阐明为什么使用友元函数。

关于c++ - 友元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1370825/

相关文章:

c++ - 尝试读取 4 字节无符号整数的二进制文件并转换为伏特

c++ - 替换文件中间的文本

javascript - 使用此正则表达式,为什么它只捕获最后一个列表项

php - 如何将 "add a friend"链接转为按钮?它的功能不同于例如 "send message"链接

C++如何使用默认参数指定模板类的所有 friend ?

c++ - 如何将 GDI 8-bpp 索引位图转换为 RGB 位图?

c++ - 如何实现 vector::clear()? (学习目的)

c++ - 创建和使用指向友元类方法的 func 指针

C++友元函数不能访问私有(private)成员

java - 如何使 TimerTask 访问单例的隐私?