Personal tools
You are here: Home Projects C++ Cfront releases Release 3.0.3 source demo lang vb_domin.C
Document Actions

vb_domin.C

by Michael L Powell last modified 2007-01-26 03:20

Click here to get the file

Size 1.4 kB - File type text/plain

File contents

/*ident	"@(#)cls4:demo/lang/vb_domin.C	1.1" */
/*#########################################################################
#                       Copyright (c) 1989 AT&T
#                         All Rights Reserved   
#
#                THIS IS PROPRIETARY SOURCE CODE OF AT&T
#       
#                     This code has been published in
#                      C++ Primer by Stanley Lippman
#                    Addison_Wesley Publishing Company
#
#########################################################################*/
/*
 * In a virtual derivation, the most derived instance
 * of a member function ``dominates.''
 * The call of pp.locate() in f() resolves to Bear::locate() 
 * because it is the most derived instance. 
 * As an exercise, copy this file and remove the
 * virtual keyword from Raccoon and Bear --
 * the call of pp.local() is now ambiguous: both
 * ZooAnimal::locate() through Raccoon
 * and Bear::locate() are now possible
 */
#include <iostream.h>

class ZooAnimal { 
public: 
    void locate() { cout << "ZooAnimal::locate()\n"; };
    // ...
};

class Bear : virtual public ZooAnimal { 
public: 
    void locate() { cout << "Bear::locate()\n"; };
    // ...
};

class Raccoon : virtual public ZooAnimal {};
class Panda : public Raccoon, public Bear {};

void f( Panda &pp ) { pp.locate(); }
main() {
    Panda lingLing;

    cout << "Demo: Dominate Function in Virtual Base Hierarchy\n";
    f( lingLing );
    return 0;
}
« September 2014 »
Su Mo Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: