Добавить sealed классы

Игорь Шаповал
Игорь Шаповал

В С++11 добавили контексные ключевые слова final, override. В языках C#, Kotlin (и в скором времени в Java) есть упакованные классы. Мы можем определить список ограниченных классов наследников от базового класса.

Предлагаю добавить контекстное ключевое слово sealed так как final, override.

 

class figure sealed {
   virtual int square() const;
  
   class triangle;
   class rectangle;
};

class triangle : figure {            // ok
   int square() override { ... }
}

class rectangle : figure {           // ok
   int square() override { ... }
}

class circle : figure {              // error
   int square() override { ... }
}

   
-4
рейтинг
7 комментариев
Игорь Шаповал

Написали двое человек что против. Пожайлуства указывайте причину, почему нет?

Игорь Шаповал
Александр Коновалов

Игорь Шаповал, нет каких-то реальных примеров, в которых это может быть полезно. Пока выглядит как пустая фича, смысл от которой стремится к нулю.

Александр Коновалов
Игорь Шаповал

yndx-antoshkka, что скажете может быть в будущем такая фича в С++?

Игорь Шаповал
yndx-antoshkka

Игорь Шаповал, нужны красивые примеры использования, а лучше примеры реализации каких-нибудь паттернов программирования, которые без sealed хорошо не реализовать.

yndx-antoshkka
Игорь Шаповал

Раньше люди писали и без override, final. И как-то жили. А в С++11 добавили и жить не могут.

Игорь Шаповал
Игорь Шаповал

Это полезно при паттерн матчинге и крутого switch.

https://kotlinlang.ru/docs/reference/sealed-classes.html

Игорь Шаповал
yndx-antoshkka

Игорь Шаповал, мне бы пример на C++, где это полезно. А то в других языках, другие правила игры и другие подходы к решению задач.

yndx-antoshkka
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения