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按引用传递?或者类是否在内存中重复?或者是其他东西?
这是通过值传递的
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
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |