, , - . , - , .
, , (, ..) . , , .
, , , - . - .
, , .
, ( , ) . :
void fun (int) base dir.
dir fun (), base, , : base::fun(). dir ( ) , dir, fun() .
, base dir, fun() :
//
#include "stdafx.h"
#include <iostream>
using namespace std;
struct base {
void fun(int i) { cout << "\nbase::i = " << i; }
};
struct dir: public base{
void fun (int i){ cout << "\ndir::i - " << i; }
};
void print_(base* pb){pb->fun(1);}
void main (void){
base B, *bp=&B;
dir D, *dp = &D;
base *pbd = &D;
bp->fun(1); // : base::i = 1
dp->fun(5); // : dir::i = 5
pbd->fun(4); // : base::i = 4
print_(&B); // : base::i = 1
print_(&D); // : base::i = 1
}
:
base::i = 1 dir::i = 5 base::i = 4
. pbd. ( D) (base *). , ++. , .. , ( ). base dir b dp . pbd->fun() . pbd base*, - D dir.
|
|
base::fun() dir::fun() pbd->fun()? , . ++, .. ( ) , . "" , .
figure. void show (). , void show() . base dir , show () :
__:: show ()
: