今天我遇到了一個奇怪的情況,那裏聲明一個刪除的操作符與某些參數改變了看似無關的代碼的行爲。 我把它縮小到下面。從這開始: namespace N
{
enum E { A, B };
struct C
{
C(E);
private:
C(int);
};
}
N::E operator|(N::E, N::E);
我在互聯網和stackoverflow上做了一些基本的搜索,當涉及泛型版本方法和非泛型版本方法時,我看到了很多有關重載解析的討論。據我所知,超載reslolution在編譯時完成的 - 所以,如果我有這樣的代碼: public class A<T>
{
public void DoStuff(T value)
{
InternalDoStuff(value);
任何人都可以向我解釋爲什麼Java會選擇第二個超載而不是第一個? public static void foo (int a, double b, double...c) {}
public static void foo (double...a) {}
public static void bar()
{
// this is the second
foo(1);
}