Конструктор структуры в C++?

LSP является правилом о контракте классов: если базовый класс удовлетворяет контракт, то LSP производные классы должны также удовлетворить тот контракт.

В Псевдо-Python

class Base:
   def Foo(self, arg): 
       # *... do stuff*

class Derived(Base):
   def Foo(self, arg):
       # *... do stuff*

удовлетворяет LSP, если каждый раз Вы называете Нечто на Производном объекте, это дает точно те же результаты как вызов Нечто на Базовом объекте, пока аргумент является тем же.

341
задан 8 revs, 6 users 40%Jay 9 September 2014 в 20:36
поделиться

7 ответов

Да. Структура подобна классу, но по умолчанию используется public: в определении класса и при наследовании:

struct Foo
{
    int bar;

    Foo(void) :
    bar(0)
    {
    }
}

Учитывая ваш другой вопрос, я бы посоветовал вам прочитать несколько руководств . Они ответят на ваши вопросы быстрее и полнее, чем мы.

15
ответ дан 23 November 2019 в 00:35
поделиться

В C ++ мы можем объявить / определить структуру точно так же, как класс, и иметь конструкторы / деструкторы для структур и определить в них переменные / функции. Единственное отличие - это область действия определенных переменных / функций по умолчанию. Помимо указанного выше различия, в основном вы должны иметь возможность имитировать функциональность класса с помощью структур.

1
ответ дан 23 November 2019 в 00:35
поделиться
struct HaveSome
{
   int fun;
   HaveSome()
   {
      fun = 69;
   }
};

I'd rather initialize inside the constructor so I don't need to keep the order.

12
ответ дан 23 November 2019 в 00:35
поделиться

Да, но если у вас есть структура в союзе, вы не сможете. Это то же самое, что и класс.

struct Example
{
   unsigned int mTest;
   Example()
   {
   }
};

Объединения не разрешают использование конструкторов в структурах. Однако вы можете создать конструктор на объединении. Этот вопрос относится к нетривиальным конструкторам в объединениях.

34
ответ дан 23 November 2019 в 00:35
поделиться

В C ++ единственное различие между классом и структурой состоит в том, что члены и базовые классы по умолчанию являются закрытыми в классах, тогда как они являются общедоступными. по умолчанию в структурах.

Таким образом, структуры могут иметь конструкторы, а синтаксис такой же, как и для классов.

442
ответ дан 23 November 2019 в 00:35
поделиться
struct TestStruct {
        int id;
        TestStruct() : id(42)
        {
        }
};
155
ответ дан 23 November 2019 в 00:35
поделиться

Да, структуры и классы в C ++ такие же, за исключением того, что члены структур по умолчанию являются общедоступными, тогда как члены классов по умолчанию являются частными. Все, что вы можете делать в классе, вы должны уметь делать в структуре.

struct Foo
{
  Foo()
  {
    // Initialize Foo
  }
};
11
ответ дан 23 November 2019 в 00:35
поделиться
Другие вопросы по тегам:

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