Std::string s()奇怪的行为
std::string s() strange behaviour
我发现了一件奇怪的事,我不明白。
std::string a();
输出时返回1
。我不知道它从哪来的。我认为a()
是一个没有参数的构造函数,但看起来不是。
我在哪里可以找到关于这个的信息?这是什么?
和当试图做std::string b(a);
编译大叫:
error: no matching function for call to ‘std::basic_string<char>::basic_string(std::string (&)())’
请解释
这是一个函数声明,而不是字符串实例化:
std::string a();
它声明了一个名为a
的函数,没有参数,并返回一个std:string
。这些是实例:
std::string a; // C++03 and C++11
std::string b{}; // C++11 syntax
std::string a();
声明一个不带参数的函数,返回类型为std::string
。当你试图打印它的时候,你打印了地址,它的值是true
。
警告:' std::string a() '的地址将总是求值为' true ' [-Waddress]
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- C++:考虑C++ std::string 中双引号 (") 的字面含义,而不使用反斜杠 (\)
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- std::string, std::wstring and UTF8
- uan inplace replacement of std::string/std::wstring?
- #define Glib::string std:wstring
- 从 std::string & std::wstring 中获取 char 整数值
- BSTR转换为std::string(std::wstring),反之亦然