C++Primer 第15章 OOP
#include <iostream>
class Base
{
public :
virtual void fun1 ( int i = 0 )
{
std:: cout << i << std:: endl;
}
private :
int a = 0 ;
} ;
class Son : public Base
{
public :
virtual void fun1 ( int i = 9 ) override final
{
std:: cout << i << std:: endl;
}
virtual void fun3 ( int i = 3 )
{
std:: cout << i << std:: endl;
}
private :
} ;
class Grandson : public Son
{
public :
private :
} ;
int main ( )
{
Base b;
b. fun1 ( 10 ) ;
Son s;
s. fun1 ( ) ;
Grandson gs;
gs. fun3 ( ) ;
gs. Base:: fun1 ( ) ;
std:: cout << 0xE800 << std:: endl;
}
#include <iostream>
#include <string>
using namespace std;
class Base
{
public :
virtual void public_fun ( ) { cout << "base public_fun" << endl; }
string public_val{ "public_val" } ;
protected :
virtual void protected_fun ( ) { cout << "base protected_fun" << endl; }
string protected_val{ "protected_val" } ;
private :
virtual void private_fun ( ) { cout << "base private_fun" << endl; }
string private_val{ "private_val" } ;
} ;
class Public_son : public Base
{
public :
string getpublic ( ) { return public_val; }
string getprotected ( ) { return protected_val; }
public :
virtual void public_fun ( ) { cout << "Public_son public_fun" << endl; }
protected :
virtual void protected_fun ( ) { cout << "Public_son protected_fun" << endl; }
private :
virtual void private_fun ( ) { cout << "Public_son private_fun" << endl; }
} ;
class Protected_son : protected Base
{
public :
string getpublic ( ) { return public_val; }
string getprotected ( ) { return protected_val; }
public :
virtual void public_fun ( ) override { cout << "Protected_son public_fun" << endl; }
protected :
virtual void protected_fun ( ) override { cout << "Protected_son protected_fun" << endl; }
private :
virtual void private_fun ( ) override { cout << "Protected_son private_fun" << endl; }
} ;
class Private_son : private Base
{
public :
string getpublic ( ) { return public_val; }
string getprotected ( ) { return protected_val; }
public :
virtual void public_fun ( ) override { cout << "Private_son public_fun" << endl; }
protected :
virtual void protected_fun ( ) override { cout << "Private_son protected_fun" << endl; }
private :
virtual void private_fun ( ) override { cout << "Private_son private_fun" << endl; }
} ;
int main ( )
{
Base base;
Public_son public_son;
Protected_son protected_son;
Private_son private_son;
cout << public_son. public_val << endl;
cout << public_son. Base:: public_val << endl;
public_son. public_fun ( ) ;
public_son. Base:: public_fun ( ) ;
protected_son. public_fun ( ) ;
private_son. public_fun ( ) ;
}