Рубрики

Некоторые интересные факты о статических функциях-членах в C ++

1) статические функции-члены не имеют этого указателя .
Например, следующая программа завершается неудачно при компиляции с ошибкой «this недоступно для статических функций-членов»

#include<iostream>

class Test {      

   static Test * fun() {

     return this; // ошибка компилятора

   }

};

   

int main()

{

   getchar();

   return 0;

}

2) Статическая функция-член не может быть виртуальной (см. Этот G-Fact)

3) Объявления функций-членов с одинаковыми именами и именем-типа-списка параметров не могут быть перегружены, если любое из них является объявлением статической функции-члена.
Например, следующая программа завершается с ошибкой при компиляции с ошибкой « void Test :: fun ()» и «static void Test :: fun () 'не могут быть перегружены »

#include<iostream>

class Test {

   static void fun() {}

   void fun() {} // ошибка компилятора

};

   

int main()

{

   getchar();

   return 0;

}

4) Статическая функция-член не может быть объявлена как const , volatile или const volatile .
Например, следующая программа завершается неудачно при компиляции с ошибкой «статическая функция-член« static void Test :: fun () »не может иметь спецификатор метода« const »»

#include<iostream>

class Test {      

   static void fun() const { // ошибка компилятора

     return;

   }

};

   

int main()

{

   getchar();

   return 0;

}

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Ссылки:

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf

Рекомендуемые посты:

Некоторые интересные факты о статических функциях-членах в C ++

0.00 (0%) 0 votes