为什么我必须在code函数内部的以下示例中对指针进行类型转换才能返回类型的值,char因为我已经在函数定义中将其声明为char的常量指针?
特别cout << (*p + 1)是结果是整数格式,而当更改为时,cout << (char) (*p + 1)结果以char格式显示,因为我对它进行了类型转换.
<<操作员是否有一些关于要显示的类型的默认参数?
#include <iostream>
using namespace std;
void code(const char* p);
int main()
{
code("This is a test");
return 0;
}
void code(const char* p)
{
while(*p)
{
cout << (*p + 1);
p++;
}
}
Run Code Online (Sandbox Code Playgroud)
*p是const char和添加1(整数文字)促进它int(见此链接中的数字促销).你必须把它扔回去char:
cout << static_cast<char>(*p + 1); // abandon C-style cast
Run Code Online (Sandbox Code Playgroud)
是的,std::ostream::operator<<重载是为了区别对待不同的类型.