Класс может быть объявлен статичный в C++?

Возможность многократного использования (или отсутствие его) не связывается ни с какой определенной парадигмой программирования. Используйте объектно-ориентированный, процедурный, функциональный или любое другое программирование по мере необходимости. Организация и возможность многократного использования происходят из того, что Вы делаете, не из инструмента.

10
задан 28 October 2009 в 03:37
поделиться

6 ответов

Нет, это не поддерживается в C ++. Единственное, что делает спецификатор static в .NET, - это заставляет вас сделать все члены класса статическими; это просто вспомогательное ключевое слово. Чтобы написать статический класс на C ++, все, что вам нужно сделать, это убедиться, что каждый член в классе отмечен как static . (Edit: и закрытый конструктор, поэтому ваш "статический" класс не может быть создан.)

22
ответ дан 3 December 2019 в 13:15
поделиться

Если вы используете C ++ / CLI, фактический синтаксис для static будет

ref class Foo abstract sealed /* abstract sealed = C# static */
{
};
27
ответ дан 3 December 2019 в 13:15
поделиться

from PyZenity import InfoMessage
InfoMessage('Stuff')

Я тестировал PyZenity как в Ubuntu, так и в Windows XP, и он работает в обоих.

Zenity looks pretty good in Gnome Zenity looks good in KDE, too, suprisingly Zenity in Windows has the wrong GTK theme

Я читал, что Zenity - это только GTK +, но я пробовал его в Gnome и KDE, и он выглядит нативно в обоих. Однако перенос в Windows не выглядит родным, поскольку в нем используется неправильная тема GTK?

Существуют также другие программы, такие как KDialog и Xdialog , которые могут быть связаны с аналогичным Веб-интерфейс Python, который может проверять и видеть, какие исполняемые файлы доступны, чтобы автоматически обо всем позаботиться? (Для KDialog также существует внешний интерфейс Ruby.)

Я также не знаю, работает ли PyZenity под OS X.

потому что он использует неправильную тему GTK?

Существуют также другие программы, такие как KDialog и Xdialog , которые могут быть связаны с аналогичным интерфейсом Python, который может проверять и видеть, какие исполняемые файлы доступны чтобы он обо всем автоматически позаботился? (Для KDialog также существует внешний интерфейс Ruby.)

Я также не знаю, работает ли PyZenity под OS X.

потому что он использует неправильную тему GTK?

Существуют также другие программы, такие как KDialog и Xdialog , которые могут быть связаны с аналогичным интерфейсом Python, который может проверять и видеть, какие исполняемые файлы доступны чтобы он обо всем позаботился автоматически? (Для KDialog также существует внешний интерфейс Ruby.)

Я также не знаю, работает ли PyZenity под OS X.

static виден только в файле, в котором он определен. Этот синтаксис недоступен в классах (только методы и переменные), но аналогичный эффект может быть получен для классов, использующих анонимное пространство имен:

namespace{
  class Foo{};
};
7
ответ дан 3 December 2019 в 13:15
поделиться

Нет, статический предназначен для объектов и функций.

0
ответ дан 3 December 2019 в 13:15
поделиться

Как упоминается в следующем потоке, C ++ не поддерживает статический класс.

Если вы имеете в виду класс без общедоступного конструктора и только статические переменные, вы можете прочитать этот поток.

http://www.daniweb.com/forums/thread122285.html#

0
ответ дан 3 December 2019 в 13:15
поделиться

Ближайшим эквивалентом статического класса в C ++ является класс, содержащий только статические переменные-члены. Это известно как паттерн моносостояние . Такой класс означает, что все экземпляры этого класса будут иметь одинаковое состояние. Синтаксис использования экземпляра моносостояния аналогичен синтаксису обычного класса (в отличие от класса-одиночки), и действительно, класс моносостояния может быть преобразован в обычный класс без изменения любого из его использования. Например,

// Monostate class
public class Administrator
{
  private:
    static int _userId;
  public
    int UserId() { return _userId; }
}

// Initializing the monostate value
int Administrator::_userId = 42;

// Using an instance of a monostate class
void Foo()
{
    Administrator admin = new Administrator();
    Assert.Equals( 42, admin.UserId() );   // will always be 42 
}
8
ответ дан 3 December 2019 в 13:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: