Re: Polymorphism and inheritance
This is a MIME GnuPG-signed message. If you see this text, it means that
your E-mail or Usenet software does not support MIME signed messages.
The Internet standard for MIME PGP messages, RFC 2015, was published in 1996.
To open this message correctly you will need to install E-mail or Usenet
software that supports modern Internet standards.
--=_mimegpg-commodore.email-scan.com-2046-1220871828-0001
Content-Type: text/plain; format=flowed; charset="US-ASCII"
Content-Disposition: inline
Content-Transfer-Encoding: 7bit
Bart Friederichs writes:
Hello,
I created the following inheritance:
class Parent {
public:
void foo(int i);
};
class Child : public Parent {
public:
void foo(int i, int i);
};
The following code fragment does not work (it doesn't compile, g++
complains about 'no matching function call for Child::foo(int)':
...
Child c;
int k = 0;
c.foo(k);
...
I assumed that by inheriting the base class, the 'Child' class would
have two 'foo' methods, with different parameters. Apparently not. Adding
void foo(int i) { Parent::foo(i); }
to the Child class, fixes it, but is that how it should be done? Why is
the Parent's foo() not polymorphised-inherited by Child?
Because if a function of the given name is declared in the child, the
compiler tries to match its signature to the function call. The parent
superclass is matched only if no function of the given name exists in the
child subclass. In your example, removing the declaration from the child
superclass will also work.
--=_mimegpg-commodore.email-scan.com-2046-1220871828-0001
Content-Type: application/pgp-signature
Content-Transfer-Encoding: 7bit
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
iEUEABECAAYFAkjFBpQACgkQx9p3GYHlUOIDHgCWNlsLRk9+IpsV8plDNBVOO/N/
dgCeMmXwmdpCpHNXGFzdrKLnCd/cFfg=
=melY
-----END PGP SIGNATURE-----
--=_mimegpg-commodore.email-scan.com-2046-1220871828-0001--