对不起,我是 C++ 新手。我正在查看一些代码并遇到了这行代码:
string cmd(*iter);
显然变量“cmd”被定义为一个字符串,但我不明白的部分是括号内的位: (*iter)
我知道“*iter”是一个指针,但变量声明后跟括号是什么意思?
对不起这么愚蠢的问题。
对不起,我是 C++ 新手。我正在查看一些代码并遇到了这行代码:
string cmd(*iter);
显然变量“cmd”被定义为一个字符串,但我不明白的部分是括号内的位: (*iter)
我知道“*iter”是一个指针,但变量声明后跟括号是什么意思?
对不起这么愚蠢的问题。
通过 初始化字符串 cmd *iter
。
注意: iter 不一定必须是指针,它也可以是迭代器。
您应该检查迭代器的*
运算符。
在“经典”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::string
s 构造函数之一。哪一个 - 取决于类型*iter
。
它正在调用接受这种参数的字符串类的构造函数。同一个类可以有不同的构造函数。
string
它使用 指向的值调用 的构造函数iter
。这行代码简单地创建了一个新string
实例cmd
,并初始化为迭代器的值。