Accelerated C++(C++98)代码块定义:xref还是find_words?
问题解答
嘿,这问题问得挺到位的——这个代码块明明白白定义的是xref函数,不是find_words。
咱们拆解一下这段代码的逻辑:
- 核心结构是
map<string, vector<int>> xref(istream& in, vector<string> find_words(const string&) = split) { ... },这里的xref是函数名,返回值类型、参数列表都围绕它展开,整个代码块就是xref函数的定义。 - 第二个参数的写法有点容易混淆:
vector<string> find_words(const string&)是参数的类型(表示“接受const string&作为输入、返回vector<string>的函数”),而find_words只是这个参数的名字。= split是给这个参数设置默认值——意思是如果调用xref时不主动传第二个参数,就自动用split函数来填充这个参数位置。 - 你调试时看到调用栈里出现
split,是因为调用xref时没传第二个参数,程序自动用了默认的split,而xref内部会调用这个名为find_words的参数(本质就是split),所以才会走到split函数里。你不需要在其他地方定义find_words,因为它只是xref的参数名,不是一个独立的函数。
内容的提问来源于stack exchange,提问作者mellow-yellow
相关产品推荐
相关产品推荐

