Статический класс
Суть данного вида состоит в том, что каждая функция данного класса является статической. Как правило, у данных типов класса не описаны конструктор и деструктор. Использовать статические функции класса можно, не создавая самого экземпляра класса. Это бывает удобно для создания списка функций, вложенных в какое-нибудь имя.
|
class print
{
public:
static void text(const char* string);
};
void print::text(const char* string)
{
printf(string);
}
int main()
{
print::text("Hello world!"); //Используем красивое вложение функции text из print;
}
чем это хуже, чем:
namespace print{
void text(const char* string);
}
void print::text(const char* string){
cout<<string<<endl;
}
int main()
{
print::text("Hello world!");
return 0;
}
Да ничем, блин. В том же Страуструпе в 8.2 сказано, что классы формируют свои пространства имён. А это (квалификатор), судя по статье, единственное, что нам требуется от этой конструкции.
Единственное что по определению позволяет нам модифицировать статическая функция-член - это статические же данные (предоставляя безопасный интерфейс и доп. обработку). Но данных-то нет. Здесь надо было бы использовать т.н. функции поддержки, не имеющие претензии на прямой доступ к компонентам класса. Но у нас вообще нет никаких данных - только методы, и то - открытые.
Единственное отличие в реализации - возможность запилить
using namespace и опускать квалифкатор. Ну ещё - псевдонимы использовать, но не факт, что это минус.