【发布时间】:2015-03-28 01:54:03
【问题描述】:
我应该通过值还是通过引用一个函数来传递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);
任何详细的解释将不胜感激。
谢谢
【问题讨论】:
-
非常感谢您的回复。我明白你的意思,但是当我必须使用 value 或 ref 时。这仍然让我感到困惑。在这里,我将在地图中存储值,所以按值传递是好事吗?还是通过参考?
-
你的问题是按值传递和按引用传递的区别是什么?
-
@Namfuak :何时使用传递引用或传递值之间的混淆。
标签: c++ set parameter-passing pass-by-reference pass-by-value