Как наследовать & amp; изменить класс только для конкретного объекта при инициализации?

В Java можно изменить структуру класса только для конкретного объекта при его инициализации:

Car ford = new Car(){
public float price;
};

Следовательно брод объект получает новый атрибут, который называется цена, а другие автомобили — нет.

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

Спасибо!

4

Решение

Нет, в C ++ вы не можете сделать это так, как вы упомянули.
Вы можете использовать анонимные классы, чтобы удовлетворить ваши требования.

class car {
public:
void test() { cout << "test" << endl; }
};

int main() {
struct : public car { int price; } fordcar;
fordcar.test();
return 0;
}

Живой код

7

Другие решения

Я не думаю, что это возможно в C ++, по крайней мере, так же, как в Java. Но вы можете использовать шаблон декоратора с немного большим количеством кода.

1

не делая целый подкласс?

Дело в том, что вы точно «создание целого подкласса» в вашем коде на Java. (Этот объект имеет класс, отличный от обычного Car объекты.) Просто этот подкласс является анонимным классом. В C ++ нет анонимных классов.

0
По вопросам рекламы [email protected]