User-defined literals (C++11 起)
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
本章尚未完成 |
C + +11引入了添加自定义的后缀文字,以提供不同的值.
原文:
C++11 introduced the ability to add custom suffixes to literals in order to provide different values.
文字后缀的,可以被重载的方式非常相似,运营商.
原文:
Literal suffixed can be overloaded in a way very similar to operators.
[编辑] 语法
return decl operator"" name ( unsigned long long n ) { body }
|
|||||||||
return decl operator"" name ( long double d ) { body }
|
|||||||||
return decl operator"" name ( char c ) { body }
|
|||||||||
return decl operator"" name ( const char* str, size_t sz ) { body }
|
|||||||||
return decl operator"" name ( const char* cstr ) { body }
|
|||||||||
[编辑] 解释
return | - | 返回值
|
decl | - | 声明说明符序列,可以包含关键字constexpr或inline
原文: Declaration specifier sequence, can contain keywords as constexpr or inline |
name | - | 一个有效的C + +标识符前加上一个下划线。没有下划线的标识符被保留,以备将来使用
原文: A valid C++ identifier, prefixed with an underscore. Identifiers without underscore are reserved for future use |
n | - | 值从一个不可分割的文字
原文: Value resulting from an integral literal |
d | - | 价值产生的浮点文字
原文: Value resulting from a floating-point literal |
c | - | 字符文本产生的价值
原文: Value resulting from a character literal |
cstr | - | NULL结尾的字符串解析的编译器,整数和浮点文字
原文: Null-terminated string as parsed by the compiler, for integer and floating point literals |
str/sz | - | 从一个字符串常量缓冲区和大小
原文: Buffer and size from a string literal |
body | - | 函数体
|
[编辑] 的例子
// used as conversion inline constexpr long double operator"" _deg ( long double deg ) { return deg*3.141592/180; } ... double x = 90.0_deg; // x = 1.570796
// used with custom type struct mytype { ... mytype ( unsigned long long ); }; mytype operator"" _mytype ( unsigned long long n ) { return mytype(n); } ... mytype x = 123_mytype;
// used for side-effects void operator"" _print ( const char* str ) { std::cout << str; } ... 0x123ABC_print;
输出:
0x123ABC