什么是在 C++ 中将 `char()` 作为函数调用?

What is a call to `char()` as a function in C++?

我以前从未见过这种对 char() 的调用是一个函数。这是在哪里描述的,它是什么意思?此用法是此 cppreference.com 社区维基页面上示例的一部分:https://en.cppreference.com/w/cpp/string/basic_string/resize:

short_string.resize( desired_length + 3 );
std::cout << "6. After:  \"";
for (char c : short_string) {
    std::cout << (c == char() ? '@' : c);  // <=== HERE ===
}

描述中的这个措辞对我来说也没有任何意义,我不明白它在说什么:

Initializes appended characters to CharT().

在上下文中突出显示:

相邻

  1. 促使我研究 std::string::resize() 方法的是尝试学习如何预分配一个 std::string 以便在 C 函数调用中用作 char* 缓冲区。这可以通过调用 my_string.resize() 函数来预先分配 std::string 来实现。然后,您可以安全地将 &my_string[0] 作为标准 char* 写入到索引 my_string.size() - 1。也可以看看:
    1. Is there a way to get std:string's buffer
    2. How to convert a std::string to const char* or char*
      1. 参见 my detailed answer to this question here

它returns0指定类型,同char(0)。叫做值初始化.

语法模仿为 class.

调用默认构造函数的语法

char的构造函数;没有参数,它构造 '[=11=]'。很少使用,因为原语提供了其他初始化它们的方法,但是你用 () 初始化它们就像你 user-defined class 一样,这确保它们被初始化为 something; char foo; 具有未定义的值,而 char foo = char();char foo{}; 肯定是 '[=11=]'


正如 HolyBlackCat 所指出的,从技术上讲,它不是构造函数,因为它不是 class,但在大多数情况下它的行为与构造函数相似。