这是通过引用还是通过值传递?

Che*_*tah 1 c++ pass-by-reference pass-by-value

可以说我有以下内容:

class MyClass
{
    // ...
}

void doSomething (MyClass instance)
{
    // Is instance passed by reference or by value (copied)?
}

void main ()
{
    MyClass instance = MyClass();

    doSomething(instance);
}
Run Code Online (Sandbox Code Playgroud)

doSomething()instance按引用传递?或者类是否在内存中重复?或者是其他东西?

111*_*111 5

这是通过值传递的

void doSomething (MyClass instance)
Run Code Online (Sandbox Code Playgroud)

这是通过引用传递的

void doSomething (MyClass& instance)
Run Code Online (Sandbox Code Playgroud)

这是由const引用传递的

void doSomething (const MyClass& instance)
Run Code Online (Sandbox Code Playgroud)

MyClass不必通过分配结构.所以:

MyClass mc=MyClass();
Run Code Online (Sandbox Code Playgroud)

实际上与以下内容相同:

MyClass mc; //no parens needed for default constructor (no args).
Run Code Online (Sandbox Code Playgroud)

编辑:这是通过const引用传递给const函数,const函数可以在const对象上调用,因为它保证不修改对象状态.

void doSomething (const MyClass& instance) const
Run Code Online (Sandbox Code Playgroud)

与许多不太严格的语言不同,Const正确性被认为是C++中的良好实践.

看我:

http://en.wikipedia.org/wiki/Const-correctness

http://www.gotw.ca/gotw/006.htm