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

C++变量初始化问题

  •  
  •   codechaser · 2019-06-12 21:08:32 +08:00 · 2860 次点击
    这是一个创建于 1750 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位晚上好! 若有两个类 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
    elfive
        1
    elfive  
       2019-06-12 22:05:01 +08:00 via iPhone
    A::A(B & b)方法
    noli
        2
    noli  
       2019-06-12 22:33:14 +08:00
    替一楼修改一下说法,
    需要一个以 B 类型常引用作为参数的 A 的构造函数

    A::A(const B& b)
    HHehr0ow
        3
    HHehr0ow  
       2019-06-12 23:23:52 +08:00
    看编译器报错,缺啥补啥
    zycpp
        4
    zycpp  
       2019-06-13 09:17:25 +08:00 via iPhone
    gcc7.3 下没问题,楼主贴下代码
    PanPancf
        5
    PanPancf  
       2019-06-13 10:30:25 +08:00
    A foo = bar 需要你提供一个 copy constructor
    tkhmy
        6
    tkhmy  
       2019-06-13 10:42:39 +08:00 via Android
    拷贝构造 不同于 赋值运算
    LitostCheng
        7
    LitostCheng  
       2019-06-13 11:13:30 +08:00
    一个是拷贝构造函数,一个是复制函数,
    6 楼 @tkhmy 正解
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5115 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:44 · PVG 17:44 · LAX 02:44 · JFK 05:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.