0

对不起,我是 C++ 新手。我正在查看一些代码并遇到了这行代码:

   string cmd(*iter);

显然变量“cmd”被定义为一个字符串,但我不明白的部分是括号内的位: (*iter)

我知道“*iter”是一个指针,但变量声明后跟括号是什么意思?

对不起这么愚蠢的问题。

4

4 回答 4

3

通过 初始化字符串 cmd *iter

注意: iter 不一定必须是指针,它也可以是迭代器。

您应该检查迭代器的*运算符。

于 2013-06-08T04:47:39.067 回答
3

在“经典”C++ 语言中,您有两种形式的初始化语法:

复制初始化

int i = 5;

和直接初始化

int i(5);

它们并不总是完全相同,但出于基本意图和目的,它们会做同样的事情。(C++11 进一步扩展了多样性,但我不会在这里讨论。)在我上面的示例中,它们实际上是完全相同的:变量在两种情况下都i将被初始化。5

所以你的

string cmd(*iter);

具有相同的效果

string cmd = *iter;

即,它cmd用 的值初始化字符串*iter,其中iter可能是某种迭代器。

假设string实际上是std::string标准库中的类,您string cmd(*iter)将调用std::strings 构造函数之一。哪一个 - 取决于类型*iter

于 2013-06-08T04:55:21.110 回答
1

它正在调用接受这种参数的字符串类的构造函数。同一个类可以有不同的构造函数。

于 2013-06-08T04:45:38.957 回答
1

string它使用 指向的值调用 的构造函数iter。这行代码简单地创建了一个新string实例cmd,并初始化为迭代器的值。

于 2013-06-08T04:45:58.787 回答