C++中的char()类型是什么?

msc*_*msc 4 c++ g++ char c++11 c++14

我编译并在GCC编译器中运行以下代码片段.它成功地运作了.

#include <iostream>
using namespace std;

int main()
{
    char ch = char('A'); 
    cout<<ch<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

A
Run Code Online (Sandbox Code Playgroud)

那么,是char()内置类型函数还是系统调用?

Jer*_*fin 11

从技术上讲,这是一个类型转换.标准中用于描述语法的短语是"显式类型转换(功能表示法)".标准([expr.type.conv]/2)的效果描述如下:

如果初始化程序是带括号的单个表达式,则类型转换表达式与相应的强制转换表达式(8.4)等效(在定义中,如果在意义上定义).[...] [T]表达式是指定类型的prvalue,其结果对象使用初始化程序直接初始化(11.6).

在这种情况下,你从'A'(一个字符文字)开始,它已经有类型char1,然后将其强制转换char(所以强制转换没有效果,什么都不做).

如果对具有采用正确参数类型的构造函数的类型执行此操作,则可以使用该类型的构造函数进行转换.但对于其他演员表示法也是如此,例如使用(T)xstatic_cast<T>(x).这种语法没有任何关于使用ctor的信息,而不是任何其他可以进行转换的语法.由于你已经明确地进行了转换,它可以用来调用标记的ctor explicit,但除此之外,它实际上并没有任何不同(无论是否使用ctor)而不仅仅是T ch = value;(没有强制转换,但可能反正包括转换).


1.请注意,这是C++与C的不同之处.在C中,字符文字具有类型int,而不是char.