operator
是重载运算符,算是非常常用的一个语法点。在c++11
中允许直接重载后缀(没错就是后缀)以实现。(好吧在一些特殊场景可能会有用,还不如用模板元……)
#include <iostream>
using namespace std;
typedef unsigned long long int interger;
interger operator "" _km(const interger num) { return num * 1000; }
interger operator "" _m (const interger num) { return num * 60; }
interger operator "" _h (const interger num) { return num * 3600; }
// 其实也可以把下划线删掉,但是会有禁告
interger operator "" h (const interger num) { return num * 3600; }
int main() {
cout << 1_m << endl;
cout << 1_km << endl;
cout << 24_h << endl;
cout << 24h << endl;
// int k;
// cout << k_km;
// 不行的,这个语法不能给变量进行后缀(毕竟谁也不知道这到底是不是个变量)
}
/*
https://en.cppreference.com/w/cpp/language/user_literal
https://zh.cppreference.com/w/cpp/language/user_literal
*/
/*
*
可用类型(返回值貌似是随意的)
const char *
unsigned long long int
long double
char
wchar_t
char8_t
char16_t
char32_t
const char * , std::size_t
const wchar_t * , std::size_t
const char8_t * , std::size_t
const char16_t * , std::size_t
const char32_t * , std::size_t
*/