В Java можно изменить структуру класса только для конкретного объекта при его инициализации:
Car ford = new Car(){
public float price;
};
Следовательно брод объект получает новый атрибут, который называется цена, а другие автомобили — нет.
Есть ли способ получить подобную функциональность в C ++, не создавая целый подкласс?
Спасибо!
Нет, в C ++ вы не можете сделать это так, как вы упомянули.
Вы можете использовать анонимные классы, чтобы удовлетворить ваши требования.
class car {
public:
void test() { cout << "test" << endl; }
};
int main() {
struct : public car { int price; } fordcar;
fordcar.test();
return 0;
}
Я не думаю, что это возможно в C ++, по крайней мере, так же, как в Java. Но вы можете использовать шаблон декоратора с немного большим количеством кода.
не делая целый подкласс?
Дело в том, что вы точно «создание целого подкласса» в вашем коде на Java. (Этот объект имеет класс, отличный от обычного Car
объекты.) Просто этот подкласс является анонимным классом. В C ++ нет анонимных классов.