我应该将std::string
作为参数按值传递还是按引用传递给一个函数。这个函数会将这些值存储在类的成员变量中。
当需要传递参数时,我总是感到困惑,不知道是按值传递还是按引用传递。请帮我解决这个疑惑。
以下是代码:
class DataStore {
public:
void addFile(const string& filename, const set< std::string>& filePaths)
{
if (dataStoreMap.insert(make_pair(filename, filePaths)).second)
{
cout << "Data Added" <<endl;
}
else
{
cout << "Data not Added" << endl;
}
}
private:
// member variable
map < string, set < string > > dataStoreMap;
};
我应该像这样声明函数吗:
void addFile(const string& filename, const set< std::string>& filePaths)
或者
void addFile(const string filename, const set< std::string> filePaths)
两者都给出了相同的结果。如果存在内存分配或性能方面的问题。
上述函数调用来自cpp类。
DataStore ds;
set<string> setFileDirectory{ "1", "2", "3", "4", "6", "5" };
ds.addFile("file.txt", setFileDirectory);
setFileDirectory.erase(setFileDirectory.begin(), setFileDirectory.end());
setFileDirectory.insert({ "1", "2", "3", "4", "5", "6" });
ds.addFile("demo.txt", setFileDirectory);
任何详细的解释都将不胜感激。
谢谢。