Что означает данная строка c++?

134
15 января 2020, 21:40

Перевожу код из c++ cli в c# и столкнулся с проблемой. Что означает данный фрагмент когда

public ref class ConvertedString 
{
   static ConvertedString();
   private:
      ConvertedString(const wchar_t const * data, int ActualLength) :
      char_data(data),
      length(ActualLength)
      {
         ...
      }
}

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

:
      char_data(data),
      length(ActualLength)

Но не могу понять, почему он приватный, и что означает данная строка static ConvertedString();

Замечу, что даже у этой строки static ConvertedString(); есть какая то реализация, это как произошло то

static Matching::ConvertedString::ConvertedString() {
  init_model_cache();
}
Answer 1

static ConvertedString(); - это объявление статического конструктора, специального метода, который вызывается исполняющей средой при создании домена приложений и может быть использован для инициализации глобального состояния класса. Реализация статического конструктора должна быть, видимо, где-то дальше в .cpp файле.

ConvertedString(const wchar_t const * data, int ActualLength) ... - реализация конструктора экземпляра объекта. Конструктор экземпляра может быть приватным по разным причинам: потому что существует другой конструктор, вызывающий его, либо для создания экземпляра должен использоваться статический метод.

READ ALSO
Некорректная работа ScrollBar в WPF

Некорректная работа ScrollBar в WPF

После переопределения стилей ScrollBar в WPF при перетаскивании ползунка мышкой, scrollbar начинает некорректно себя вести, а именно не реагирует на прокручивание...

146
Приложение на asp.net mvc + angular 7

Приложение на asp.net mvc + angular 7

Начинаю изучать angularСкачал node

143
использование ConcurentBag при работе с БД

использование ConcurentBag при работе с БД

Как можно использовать ConcurrentBag при работе с БД? и в каких случаях это нужноБольшинство примеров рассмотрены с добавлением string/int значений

143