c++ friend 类作为 ctor 的参数

标签 c++ class friend

我想知道这段代码怎么会正确以及编译器如何知道首先创建类 A 的对象,我认为它不应该编译,因为 B 的构造函数请求类型 A 而不是 int

    class A 
{
    int a1;
public:
    A(int i) { cout << i << "A"<<endl;}
    friend class B;
};

class B
{
public:
    B(A a) {cout <<"B" <<a.a1;}
};

void main() 
{
    B b(7);
}

输出:7A B7

最佳答案

这与friend无关。

因为你还没有标记A构造函数explicit,所以发生了从intA的隐式转换.

关于c++ friend 类作为 ctor 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28392601/

相关文章:

c++ - OpenGL:着色器存储缓冲区映射/绑定(bind)

c++ - std::map 对象或对象指针?

c++ - 等待 ShellExecuteEx(在 Windows 进程上设置访问权限)

java - 如何在二维矩阵中找到相同元素的行?

HTML CSS 按钮悬停不会通过类工作

c++ - C++构造对象时提供PV函数内容

c++ - friend &&模板

c++ - 为什么这个私有(private)构造函数对其友元无法访问

C++与嵌套私有(private)类的友元

c++ - 为什么 const 结构数组在按名称引用 const 结构时不放在 .rodata 中?