2016-11-23 3 views
-1
#include<iostream> 
class Test { 
    static void fun() {} 
    void fun() {} // compiler error 
}; 

int main() 
{ 
    getchar(); 
    return 0; 
} 

Выход:Почему статический член класса не может быть перегружен в C++?

|4|error: ‘void Test::fun()’ cannot be overloaded|

+2

Итак, начнем с удалением C тег ... –

+0

Направо на C++ компилятор свой собственный с этой функциональностью. Мы можем назвать это альтернативой. –

ответ

0

Это невозможно, так как стандарт запрещает это непосредственно.

C++14 Цитируя стандартный документ, глава § 13.1, «Перегружаемые декларации»

  1. Certain function declarations cannot be overloaded

    • Function declarations that differ only in the return type cannot be overloaded.

    • Member function declarations with the same name and the same parameter types cannot be overloaded if any of them is a static member function declaration. [....]