codechaser
V2EX  ›  C++

C++变量初始化问题

  •  
  •   codechaser · Jun 12, 2019 · 3888 views
    This topic created in 2551 days ago, the information mentioned may be changed or developed.

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

    B bar;
    A foo(bar);
    

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

    B bar;
    A foo;
    foo = bar;
    

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

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

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

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

    A::A(const B& b)
    HHehr0ow
        3
    HHehr0ow  
       Jun 12, 2019
    看编译器报错,缺啥补啥
    zycpp
        4
    zycpp  
       Jun 13, 2019 via iPhone
    gcc7.3 下没问题,楼主贴下代码
    PanPancf
        5
    PanPancf  
       Jun 13, 2019
    A foo = bar 需要你提供一个 copy constructor
    tkhmy
        6
    tkhmy  
       Jun 13, 2019 via Android
    拷贝构造 不同于 赋值运算
    LitostCheng
        7
    LitostCheng  
       Jun 13, 2019
    一个是拷贝构造函数,一个是复制函数,
    6 楼 @tkhmy 正解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2928 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 13:47 · PVG 21:47 · LAX 06:47 · JFK 09:47
    ♥ Do have faith in what you're doing.