C++可怕的重载

2021年09月16日 阅读数:2
这篇文章主要向大家介绍C++可怕的重载,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

原文地址ios

#include <iostream>

struct Bad { };
struct B { };
struct A {
	Bad operator,(B b) { return Bad(); }
};
struct D { };
struct Ugly {
	D operator>(Bad b) { return D(); }
} U;
struct Terrible { } T;
struct Evil {
	~Evil() {
		std::cout << "破坏" << std::endl;
	}
};
struct Nasty {
	Evil operator,(D d) { return Evil(); }
};
struct Idea {
	void operator()(A a, B b) {
		std::cout << "保存数据" << std::endl;
	}
	Nasty operator<(Terrible t) { return Nasty(); }
} gun;//这是个对象.

template<typename T, typename U>
void fun(A a, B b) {
	std::cout << "哈哈!" << std::endl;
}

int main() {
	A a;
	B b;

	// 猜猜结果
	fun<A, B>(a, b);
	gun<T, U>(a, b);
    //gun<T|a,b|U>Bad|Evil,D==>破坏.
}

本文同步分享在 博客“fqbqrr”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。git