overload-resolution

    13熱度

    8回答

    我試圖重載一些模板函數來執行特定的動作,如果我把它用一個給定的類MyClass的或任何派生類MyClassDer。下面是代碼: #include <iostream> struct MyClass { virtual void debug() const { std::cerr << "MyClass" << std::endl; }; }; struct

    1熱度

    2回答

    我認爲類型會自動解決最深的部分他們可以。如果Cat : Animal和你打電話cat->talk(),如果Cat覆蓋Animal類talk(),貓會說「喵」,而不是一些奇怪的通用Animal抱怨提供基類Animal。 所以我很困惑這個問題: struct Animal { virtual void talkTo(Animal* o) { puts("Animal-Animal

    3熱度

    2回答

    今天我遇到了一個奇怪的情況,那裏聲明一個刪除的操作符與某些參數改變了看似無關的代碼的行爲。 我把它縮小到下面。從這開始: namespace N { enum E { A, B }; struct C { C(E); private: C(int); }; } N::E operator|(N::E, N::E);

    14熱度

    1回答

    如何檢查重載分辨率設置? 我有4個競爭函數用於多個呼叫站點。在一個調用站點中,我希望調用一個函數,但編譯器會提取另一個函數。我不知道爲什麼/這不是微不足道的。要了解正在發生的事情,我正在使用enable_if/disable_if開啓/關閉功能,但這實在太慢/乏味/煩人。 所以我想讓編譯器告訴我「爲什麼?」。也就是說,這個單一調用點:由ADL發現 的所有功能, 在重載決議集 從重載決議拒絕了所有功

    5熱度

    1回答

    您能解釋STL容器如何處理具有空初始化程序列表的賦值運算符? 時我會做這樣的事情: vector<int> v; v = { }; 被調用的函數是不: vector& operator= (initializer_list<value_type> il); 但: vector& operator= (vector&& x); ,另一方面,當我會做類似於我自己的課程: struct A

    4熱度

    4回答

    我在互聯網和stackoverflow上做了一些基本的搜索,當涉及泛型版本方法和非泛型版本方法時,我看到了很多有關重載解析的討論。據我所知,超載reslolution在編譯時完成的 - 所以,如果我有這樣的代碼: public class A<T> { public void DoStuff(T value) { InternalDoStuff(value);

    3熱度

    2回答

    如果我重載操作new和delete一類具有一個嵌套類: class A { public: static void* operator new(size_t); static void operator delete(void*); class B; } 會爲A::B對象中A::B對象和分配的情況下,分配使用重載A::new和A::delete或全球默認?

    1熱度

    3回答

    我有這樣一類的元組元素類型: template <typename... Types> class Evaluator { public: template <typename... Types> Evaluator(Types... args) { list = std::make_tuple(args...); } temp

    0熱度

    1回答

    任何人都可以向我解釋爲什麼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); }

    1熱度

    2回答

    void f() {} struct A { void f() {} }; struct B : A { B() { f(); // A::f() is always called, and ::f is always ignored } }; int main() { B(); } 由於類B的設