这些陈述之间有什么区别

时间:2015-06-03 07:37:36

标签: c++

我有这两个陈述。有什么区别 string(sample_string).erase(i,j)sample_string.erase(i,j)

3 个答案:

答案 0 :(得分:1)

sample_string.erase(i,j)

erase对象上调用sample_string方法(假设这是实现此方法的类的实例)。

string(sample_string).erase(i,j)

创建string类的临时实例,使用string对象调用sample_string构造函数来初始化字符串,然后调用{该临时对象的{1}}方法。

答案 1 :(得分:1)

我认为simple_string的类型是std :: string。代码

string(sample_string).erase(i, j)

看起来无法正常工作,因为string(sample_string)返回一个temp obj,然后在临时字符串对象上调用erase方法。与sample_string无关。

答案 2 :(得分:0)

第一个,string(sample_string).erase(i,j)创建一个临时字符串,并从该临时字符串中删除。

第二个从字符串对象sample_string中删除。