首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  C/C++/Obj-C

C++变量初始化问题

  •  
  •   codechaser · 4 天前 · 635 次点击

    各位晚上好! 若有两个类 A,B,A 中实现了通过 B 来构造 A 的构造方法,那么

    B bar;
    A foo(bar);
    

    成立.然后又在 A 中重载=运算符,使得下面成立:

    B bar;
    A foo;
    foo = bar;
    

    现在我直接赋值初始化就出错(请教一下原因):

    B bar;
    A foo = bar;//显示没有这种转换形式
    

    如果想要像上面这样初始化 A 类,我还需要做什么吗?

    7 回复  |  直到 2019-06-13 11:13:30 +08:00
        1
    elfive   4 天前 via iPhone
    A::A(B & b)方法
        2
    noli   4 天前
    替一楼修改一下说法,
    需要一个以 B 类型常引用作为参数的 A 的构造函数

    A::A(const B& b)
        3
    HHehr0ow   4 天前
    看编译器报错,缺啥补啥
        4
    zycpp   4 天前 via iPhone
    gcc7.3 下没问题,楼主贴下代码
        5
    PanPancf   4 天前
    A foo = bar 需要你提供一个 copy constructor
        6
    tkhmy   4 天前 via Android
    拷贝构造 不同于 赋值运算
        7
    LitostCheng   4 天前
    一个是拷贝构造函数,一个是复制函数,
    6 楼 @tkhmy 正解
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2995 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 17ms · UTC 11:00 · PVG 19:00 · LAX 04:00 · JFK 07:00
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1