如何最好地传递对函数的引用
How best to pass a reference to a function?
给定以下代码:
[example.h]class MyClass
{
public:
MyClass();
std::string name;
std::string address;
bool method (MyClass &object);
};
[example.cpp]
MyClass::MyClass()
{
}
bool MyClass::method (MyClass &object) {
try {
object.name = "New Name";
std::cout << "Name: " << object.name << " " << object.address << std::endl;
return true;
}
catch (...) {
return false;
}
}
[test.cpp] #include "example.h"
int main()
{
MyClass myC;
myC.address = "address";
bool quest = myC.method(myC);
}
我在上面的main
中调用myC.method
的方式与这种替代方式有什么区别:
MyClass *myC = new MyClass();
bool quest = myC.method(*myC);
哪个更好,为什么?
在这两种情况下,你可以发送相同的值,但简单地坚持当前的代码是更好的,因为它没有指针解引用和new
。一旦你用完这个对象,你需要注意delete
' ',我认为你在这里不需要。
最好在method
函数中使用MyClass &object const
,这样传入的引用就不会被改变。
如果您需要对象的持续时间超过调用它的函数的作用域,则使用new(通常是动态内存分配)是更好的选择。如果只是在一个已知的持续时间内,MyClass myC;
本地作用域版本是最好的(因为它更容易读取和维护)。
当使用new
时,对象"myC"不会被删除,直到你调用delete
。
但是如果你只是将它定义为一个局部对象它将在超出作用域时被删除:
{
MyClass myC;
myC.DoSomeStuff();
} // It'll be destroyed here
相关文章:
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 类 Referention 中C++回调函数引用非静态函数
- 使用函数引用指向节点的指针删除链表中的节点?
- 解释通过从函数引用返回数组的语法
- "Class1"类"Class2"对象作为私有数据成员。如何通过"Class 2"函数引用"Class1"对象?
- 使用默认构造函数引用成员变量初始化错误
- 无法调用函数引用 c++
- 使用 decltype(this) 获取函数引用
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 从内联函数引用文件静态变量
- Boost::将sigaction函数引用绑定到实例
- 一种比函数引用更有效的方法
- 奇怪的未定义函数引用,函数调用C++不存在
- 是否可以检测绑定成员函数引用的对象是否被删除或销毁
- 构造函数引用参数导致seg错误
- 是否可以使函数模板从函数引用中获取“decltype”
- 无法让 Lua 函数引用"self"
- 如何解析变量和函数引用(Linker & Compiler)?
- 从不同模块调用函数 - 引用错误
- 如何在主函数中连接到数据库,然后从其他函数引用它