论operator的另类用法
  • 板块学术版
  • 楼主YCSluogu
  • 当前回复10
  • 已保存回复10
  • 发布时间2021/8/29 09:46
  • 上次更新2023/11/4 08:40:29
查看原帖
论operator的另类用法
311721
YCSluogu楼主2021/8/29 09:46

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
 */

2021/8/29 09:46
加载中...