Junior — Middle
შესაძლებელია თუ არა C++-ში განსაზღვრო კლასი, რომელიც შეიცავს მხოლოდ სუფთა ვირტუალურ ფუნქციებს და რომლის პირდაპირ შექმნა შეუძლებელია?
sobes.tech AI
პასუხი AI-სგან
დიახ, C++-ში შესაძლებელია კლასის განსაზღვრა, რომელიც შეიცავს მხოლოდ სუფთა ვირტუალურ ფუნქციებს, და ასეთი კლასი პირდაპირ ვერ შეიქმნება. ამ კლასს უწოდებენ აბსტრაქტულ კლას. ის სერვისს ან ბაზის კლასს წარმოადგენს მემკვიდრეებისთვის, რომლებიც უნდა განახორციელონ ყველა სუფთა ვირტუალური ფუნქცია.
მაგალითი:
class Interface {
public:
virtual void doSomething() = 0; // სუფთა ვირტუალური ფუნქცია
virtual ~Interface() = default;
};
// არ შეიძლება შექმნათ Interface ობიექტი პირდაპირ:
// Interface obj; // სარედაქციო შეცდომა
class Implementation : public Interface {
public:
void doSomething() override {
// განახორციელება
}
};
int main() {
Implementation impl;
impl.doSomething();
}