Ten kod faktycznie działa:Czy mieszanie starej i nowej składni funkcji C++ w klasie jest dozwolone?
class Abstract {
virtual auto foo() -> int = 0;
};
class Concrete: public Abstract {
int foo() { cout << "blah!" << endl; return 1; }
} instance;
Rozumiem, że funkcja zostaje zniekształcone i związana być taki sam podpis funkcji, ale jest to rodzaj mieszania faktycznie prawny w C++ 14?
Zakładam, że "Beton" powinien pochodzić z "Abstrakcyjnego" tam? (PS: Jeśli chcesz się upewnić, że jest to w rzeczywistości przesłonięcie funkcji podstawowej, użyj słowa kluczowego override, jeśli nie uda się skompilować, wtedy wiesz, że nie pasują.) – Borgleader
Ponieważ C++ jest kompatybilny wstecz, nie powinno być problem, jeśli jest poszukiwany to kolejne pytanie (przewodnik po stylu) – deW1
@ deW1 * ogólnie */* głównie * zgodność wsteczna byłaby bardziej dokładna ;-) –