C++可怕的重载

原文地址

#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==>破坏.
}
posted @ 2021-09-15 08:51  zjh6  阅读(12)  评论(0)    收藏  举报  来源