August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
类的一个目的是令程序员能设计、实现高度模仿内置类型的自定义类型。构造函数提供的初始化功能等同甚至超出了内置类型初始化的灵活性和效率,但对于内置类型,我们可以声明字面值:
·123是一个int。
·0xFF00u是一个unsigned int。
·123.456是一个double。
·"Surprise!"是一个const char[10]。
如果对用户自定义类型也能提供这种字面值就非常有用了。通过为恰当的字面值后缀定义含义,我们可以做到这一点,从而得到:
·"Surprise!"s是一个std::string。
·123s是second(秒)。
·12.7i是imaginary(虚部),因此12.7i+47是一个复数(即{47,12.7})。
特别是,通过使用合适的头文件和名字空间,我们就能直接从标准库获得上述功能。
不出意外,带有用户自定义后缀的字面值称为用户自定义字面值(user-defined literal)或简称为UDL。这种字面值是使用字面值运算符(literal operator)定义的。字面值运算符将其参数类型的字面值及一个后缀转换为其返回类型。例如,用于imaginary的后缀i可实现如下:
在这里,
·operator""指出我们在定义一个字面值运算符。 ...
Read now
Unlock full access