在cpp中传递引用和传递值有什么不同?

时间:2013-06-19 09:17:57

标签: c++ gcc g++

编译器说没有找到类中的方法。 整个错误消息是 找不到功能

common :: base :: CategoryIdCache :: addNewCid(std :: string,common :: base :: eSqlCatalog&,std :: vector,std :: allocator>,std :: allocator,std: :allocator>>>&,std :: vector,std :: allocator>,std :: allocator,std :: allocator>>>&)

候选人

common :: base :: CategoryIdCache :: addNewCid(std :: string&,common :: base :: eSqlCatalog&,std :: vector,std :: allocator>,std :: allocator,std :: allocator>>>&,std :: vector,std :: allocator>,std :: allocator,std :: allocator>>>&)

2 个答案:

答案 0 :(得分:3)

有几个原因导致这种情况发生:

  • 您要么实现具有不同签名的功能
  • 或者您尝试将临时绑定到非const引用

所以

struct X
{
    void foo(std::string& x);
};

//implementation
void X::foo(std::string x); //wrong - different signature

struct X
{
    void foo(std::string& x);
};

//
int main()
{
    X x;
    x.foo("some string");
}

答案 1 :(得分:0)

通过引用传递意味着您将变量的地址(引用)传递给函数,而传递值意味着您正在通过相关变量复制该时刻包含的值,然后将其传递给函数。 / p>

与传递值的方式相比,您必须以不同的方式声明原型或函数。