gpt4 book ai didi

C++ 返回类型重载技巧

转载 作者:IT老高 更新时间:2023-10-28 22:59:52 25 4
gpt4 key购买 nike

我很无聊,想出了这样的hack(伪代码):

 1 struct proxy {
2 operator int(); // int function
3 operator double(); // double function
4 proxy(arguments);
5 arguments &arguments_;
6 };
7
8 proxy function(arguments &args) {
9 return proxy(args);
10 }
11 int v = function(...);
12 double u = function(...);

在实际代码中使用是邪恶的吗?

我可能的使用场景是例如数组元素的乘积,它可能/可能不会溢出:

int size(short *array);
short size(short *array);

函数的原因,如果你使用模板,那么模板参数可以从函数参数中推断出来

最佳答案

我宁愿使用模板特化,只是感觉不那么“hacky”并且可能会更快(没有对象创建,当然可以通过智能编译器进行优化)。

但无论如何,我宁愿看到类似的代码

template<typename T> T function();

template<> int function() {
return 1;
}

template<> float function() {
return 1.0;
}

....
int a = function<int>();
float b = function<float>();

尽管您的代码没有问题,特别是如果您远离数字类型/指针,否则可能会出现意想不到的影响,C++ 中的转换规则相当复杂。

关于C++ 返回类型重载技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com