ben değiştiremem varolan bir sınıfın A
olmayan sanal yöntemleri eklemek istiyorum. Bu nedenle, A
'dan miras alınan bir sınıf B
oluşturun ve istediğim yöntemleri ekleyin. Ben tip A
bir nesne varsa Şimdi, ben sadece tip B
bir nesne olarak kabul edilebilir? Say, ancak beklendiği gibi çalışmaya standardı tarafından garanti olmadığını merak yasal Aşağıdaki kod ?:C++ 'da, yalnızca sanal olmayan yöntemler ekleyen türetilmiş bir sınıfa yayınlanmasına izin verilir mi?
class A { <...> };
class B: public A {
void f();
};
A a();
void g(const B&);
void h() { g(static_cast<B&&>(a())); }
Bu derlemek ve çalışma yapmasıdır. Nedenini göremiyorum, henüz çok temiz değil ..
Hayır, oyuncu, tanımlanmamış davranışa neden oluyor –
Ancak "B a;", ardından bir void foo (A & a);) 'de olduğu gibi bir' A & 'argümanı olarak alan bir işleve yapılan bir çağrının ardından tanımlanmış: 'foo (a)' öyle ki iç foo, gerçekten a' gerçekten 'b' olduğunu' biliyoruz (ama nasıl olur?), sen döküm yapabilirsiniz –
bir nesneyi döküm istiyoruz Neden eğer. – MikeMB