对于我的大多数程序,我都是通过引用传递对象:
MyClass
{
public:
auto DoStuff()->void
{
//Doing stuff...
}
};
MySubClass
{
public:
auto CallFunction(MyClass &MCO)->void
{
MCO.DoStuff();
}
};
int main()
{
MyClass MCO;
MySubClass MSCO;
MSCO.CallFunction(MCO);
}
对于我不需要编辑的对象(只调用其函数),是否通过引用传递最节省内存的解决方案?
或者,使用原始指针?
MyClass
{
public:
auto DoStuff()->void
{
//Doing stuff...
}
};
MySubClass
{
public:
auto CallFunction(MyClass *MCO)->void
{
MCO->DoStuff();
}
};
int main()
{
MyClass *MCO;
MySubClass MSCO;
MSCO.CallFunction(MCO);
delete MCO;
}
答案 0 :(得分:1)
如果您不需要修改对象,请通过 const引用传递它。
void CallFunction(const MyClass &MCO)
{
MCO.DoStuff();
}
您通常应该根据语义选择传递模型,而不是优化。通过ref或const ref传递对象。按值传递数据,并避免指针,除非您的编程模型需要它。对于微优化,您几乎永远不会比编译器做得更好。
一旦您对程序进行了分析并确定了瓶颈,您通常可以通过修改算法或存储数据的方式来获得更多收益。