在我以前的应用程序中,我有一个这样的对象:
class myType
{
public:
int a;
string b;
}
Run Code Online (Sandbox Code Playgroud)
它有很多实例分散在各处,并传递给几乎所有的功能.
该应用程序很慢.分析说,95%的时间被字符串分配器功能吃掉.
我知道如何使用上面的对象,但不知道如何使用字符串指针.
class myType
{
public:
int a;
string* b;
}
Run Code Online (Sandbox Code Playgroud)
他们告诉我如上所述使用指针.
复制对象时复制的内容是什么?
如何使用带有指针的类:
访问字符串值
修改字符串值而不修改对象中的值(复制?)
如果我使用字符串指针会改变一般的东西?
小智 6
它实际上可能会更慢 - 你仍然需要创建和复制字符串,但现在你有动态分配的开销.我的猜测是你正在复制你的对象太多 - 每当你调用一个函数时,你的myType对象应该作为const引用传递,尽可能,而不是值:
void f( const myType & mt ) {
// stuff
}
Run Code Online (Sandbox Code Playgroud)
如果你真的需要更改mt,你会使用非const引用 - 这比传递一个值并使用修改后的字段返回一个新值要便宜.