代码之家  ›  专栏  ›  技术社区  ›  cpx

铸件返回类型

c++
  •  0
  • cpx  · 技术社区  · 14 年前

    void func(int &i) //error converting parameter 1 from int to int&
    {
    }
    
    int main()
    {
        double d = 6.8;
        func(int(d));
    }
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   kennytm    14 年前

    Yes casting返回一个rvalue(临时值),但是 可变的 引用需要左值。

    int main() {
       double d = 6.8;
       {
          int v = d;
          func(v);
          d = v; // if the change needs to be reflected back to d.
          // note that, even if `func` doesn't change `v`, 
          // `d` will always be truncated to 6.
       }
    }
    

    如果 func 不会修改 i ,输入参数应为 常数 参考,哪个

    void func(const int& i);
    

    (但对于原语 func(int i) 会更有效率。)

        2
  •  0
  •   Cogwheel    14 年前

    int(d) 内部呼叫 func int 变量来存储转换后的值,然后将其传递给函数。