Articles of herencia

Destructores virtuales C ++ 11 y generación automática de funciones especiales de movimiento

Las reglas para la generación automática de funciones de movimiento especiales (constructor y operador de asignación) en C ++ 11 especifican que no se puede declarar ningún destructor. La lógica es, presumiblemente, que si necesitas hacer algo especial en la destrucción, un movimiento puede no ser seguro. Sin embargo, para llamadas de destructor adecuadas en […]

Herencia y plantillas en C ++: ¿por qué los métodos son invisibles?

Cuando una plantilla hereda públicamente de otra plantilla, ¿no se supone que los métodos públicos básicos son accesibles? template class Test { public: Test() {} int MyMethod1() { return a; } }; template class Another : public Test { public: Another() {} void MyMethod2() { MyMethod1(); } }; int main() { Another a; a.MyMethod1(); a.MyMethod2(); […]

¿Por qué no puedo acceder a un miembro protegido desde una instancia de una clase derivada?

Hace tiempo que no uso C ++ y no puedo entender por qué el seguimiento no funciona: class A { protected: int num; }; class B : public A { }; main () { B * bclass = new B (); bclass->num = 1; } Comstackr esto produce: error C2248: ‘A :: num’: no ​​se […]

Herencia con el constructor de clase base con parámetros

Código simple: class foo { private int a; private int b; public foo(int x, int y) { a = x; b = y; } } class bar : foo { private int c; public bar(int a, int b) { c = a * b; } } Visual Studio se queja del constructor de “barra”: Error […]

El operador ‘instanceof’ se comporta de manera diferente para interfaces y clases

Me gustaría saber sobre el comportamiento siguiente del operador instanceof en Java. interface C {} class B {} public class A { public static void main(String args[]) { B obj = new B(); System.out.println(obj instanceof A); //Gives compiler error System.out.println(obj instanceof C); //Gives false as output } } ¿Por que es esto entonces? No hay […]

Implementando IDisposable en una subclase cuando el padre también implementa IDisposable

Tengo una clase para padres e hijos que necesitan implementar IDisposable . ¿Dónde deberían entrar las llamadas virtual (y base.Dispose() ?)? Cuando simplemente anulo la llamada Dispose(bool disposing) , me parece realmente extraño afirmar que implemente IDisposable sin tener una función Dispose() explícita (simplemente utilizando la heredada), pero que tengo todo lo demás. Lo que […]

iPhone – UIImagePickerControllerDelegate herencia

He agregado un UIImagePickerController a un UIViewController . También he asignado el UIImagePickerControllerDelegate a ese UIViewController . Cuando ejecuto la siguiente línea, myPicker.delegate = self; Xcode me regala el siguiente mensaje: advertencia: asignar a id del tipo incompatible ‘RootViewController’ Luego agregué el protocolo UINavigationControllerDelegate al mismo UIViewController y el mensaje de error desapareció. Entonces, ¿tengo […]

¿Puedo anular una propiedad en c #? ¿Cómo?

Tengo esta clase base: abstract class Base { public int x { get { throw new NotImplementedException(); } } } Y el siguiente descendiente: class Derived : Base { public int x { get { //Actual Implementaion } } } Cuando compilo recibo esta advertencia diciendo que la definición de x de la clase derivada […]

Acceso predeterminado a la herencia de clases

Supongamos que tengo una clase base y derivada: class Base { public: virtual void Do(); } class Derived:Base { public: virtual void Do(); } int main() { Derived sth; sth.Do(); // calls Derived::Do OK sth.Base::Do(); // ERROR; not calls Based::Do } como he visto, deseo acceder a Base :: Do a través de Derived. Obtengo […]

¿Cuál es la diferencia entre usar el atributo Serializable e implementar ISerializable?

¿Cuál es la diferencia entre usar el atributo Serializable e implementar la interfaz ISerializable ?