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();
}
转载请注明原文地址: https://lol.8miu.com/read-22936.html