版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
voidget_XY(){cout<<"Entervoidput_XY(){cout<<"x=protected
:
int
x,V;};class
B:public
A{public:int
get_S({return
s
c};voidmake_SO{s=x*y;};protected:
ints};class
C:public
B{public:void
get_H({cout<<"Enter
a
number
ofint
get_V({return
v;}void
make_VO{make_S();v=get_SO*h;}
protected:
int
h,
v;华南理工大学计算机学院周霭如2025two
numbers
of"≤<x<<".v="<<v<≤保护数据成员
在类层次中可见//使用基类数据成员x,y:";cin>>x>>y;}'\n';}classAAclass
B:public
X#include<iostream>using
namespace
std;class
A{public:h:";cin>>h;}//使用基类成员函数例18-1
公有继承的测试class
C:public
Ycout<<"It
is
object_A:In";objA.get_XY();objA.put_XY();cout<<"It
is
object_B:\n";objB.get_XY();objB.make_SO;cout<<"S="<<objB.get_SO<<endl;cout<<"It
is
object_C:\n";objC.get_XY();objC.get_H();objC.make_VO;cout<<"V="<<objC.get_V(<<endl;int
main(){A
objA;B
objB;C
objC;例18-1
公有继承的测试华南理工大学计算机学院周霭如2025C
objC;cout<<"It
is
object_A:\n";objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";
objB.get_XYO);objB.make_S(;cout<<"S="<<objB.get_S(<<endl;
cout<<"It
is
object_C:\n";objC.get_XYO;objC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;int
main()
例18-1
公有继承的测试{
A
objA;
X
yl华南理工大学计算机学院周霭如2025objB;
objAobjA.xobjA.yB{A
objA;B
objB;C
objC;cout<<"It
is
object_A:\n";objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";
objB.get_XYO);objB.make_S(;cout<<"S="<<objB.get_S(<<endl;
cout<<"It
is
object_C:\n";objC.get_XYO;objC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;int
main()
例18-1
公有继承的测试l华南理工大学计算机学院周霭如2025objB.xobjB.yobjB.sobjA.xobjA.yX
yobjBobjAS{A
objA;B
objB;C
objC;cout<<"It
is
object_A:\n";
objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";
objB.get_XYO);objB.make_S(;cout<<"S="<<objB.get_S(<<endl;
cout<<"It
is
object_C:\n";objC.get_XYO);objC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;objAobjBobjCSobjB.xobjC.xobjB.yobjC.yobjB.SobjC.shobjC.hVobjC.vint
main()
例18-1
公有继承的测试l华南理工大学计算机学院周霭如2025objA.xobjA.yX
y{A
objA;B
objB;C
objC;cout<<"It
is
object_A:\n";objA.get_XYO;objA.put_XY();
Qcout<<"It
is
object_B:\n;。objB.get_XYO);objB.make_S(;cout<<"S="<<objB.get_S(<<enm,cout<<"It
is
object_C:\n";objC.get_XYO;objC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;}int
main()
例18-1
公有继承的测试对objA
的数据成员操作obj
xobjA.yobjB.SobjC.sobjB.xobjC.xobjB.yobjC.yobjBobjChobjC.h华南理工大学计算机学院周霭如2025VobjC.vX
yobjAS{A
objA;BobjB;C
objC;cout<<"It
is
object_A:\n";objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";objB.get_XY(
;QobjB.make_S(;cout<<"S="<<objB.get_S(<<endl;cout<<"It
is
object_C:\n";objC.get_XYO;objC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;objB.xobjC.xobjB.yobjC.yobjB.SobjC.shobjC.hVobjC.vint
main()
例18-1
公有继承的测试调用基类A成员函数对objB的数据成员操作l华南理工大学计算机学院周霭如2025objAobjBobjCobjA.xobjA.yX
yS{A
objA;B
objB;C
objC;cout<<"It
is
object_A:\n";
objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";
objB.get_XYO);objB.make_SO;Qcout<<"S="<<objB.get_S(<<endl;
cout<<"It
is
object_C:\n";objC.get_XY();objC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;objBobjCobjB.xobjC.xobjB.yobjC.yobjB.SobjC.shobjC.hVobjC.vint
main()
例18-1
公有继承的测试调用派生类B成员函数对objB的数据成员操作l华南理工大学计算机学院周霭如2025objA.xobjA.yX
yobjAS{A
objA;B
objB;C
objC;cout<<"It
is
object_A:\n";objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";objB.get_XYO);objB.make_S(;cout<<"It
is
object_C:Yn";objC.get
_XY(;
CobjB.get_S()
<<
endl
ct_CobjC.get_H();objC.make_V(;cout<<"V="<<objC.get_V()<<endl;}SobjB.x
objB.y
objB.Sh
Vobjcx
objc.y
objC.s
objC.h
objC.v调用基类A成员函数对objC的数据成员操作int
main()
例18-1
公有继承的测试objAobjBobjCobjA.xobjA.y华南理工大学计算机学院周霭如2025X
y:\n"
;{A
objA;B
objB;C
objC;cout<<"It
is
object_A:\n";objA.get_XY();objA.put_XY(;cout<<"It
is
object_B:\n";
objB.get_XYO);objB.make_S(;cout<<"S="<<objB.get_S()<<endl;
cout<<"It
is
object_C:\n";objC.get_XY();objC.get
_H(;SobjB.x
objB.y
objB.Sh
VobjC.x
objC.y
objC.s
objC.h
objC.v调用派生类C成员函数对
objC
的数据成员操作int
main()
例18-1
公有继承的测试objC.make
_V(;cout<<"V="<<
objC.get_V(<<endl;objAobjBobjCobjA.xobjA.y华南理工大学计算机学院周霭如2025X
y{A
objA;B
objB;C
objC;cout<<"It
is
object_A:In";
objA.get_XY(;objA.put_XY(;cout<<"It
is
object_B:In";
objB.get_XY(;objB.make_SO;cout<<"S="<<objB.get_S(<<endl;cout<<"It
is
object_C:\n";objC.get_XY(;objC.get_H(;objC.make_VO;cout
<<"V="<<objC.get_V(<<endl;x
=
1,y=2I
t
is
object_B:Enter
two
numbersof
x,y:34
S=12I
t
is
object
_C
:Enter
two
numbers
of
x,y:45Enteranumberofh:6V
=120Press
any
key
to
continueobjBobjCobjB.xobjC.xobjB.yobjC.yobjB.SobjC.shobjC.hVobjC.vint
main()
例18-1
公有继承的测试It
is
object_A
:Enter
two
numbers
of
x,y:12objA.xobjA.y华南理工大学计算机学院周霭如2025X
yobjASprivate成员protected成员private成员public成员private成员private成员protected成员public成员2.私有继承基类
派生类华南理工大学计算机学院周霭如2025#include<iostream>using
namespace
std;classA{public:voidget_XY({cout<<"Enter
two
numbers
ofxavoid
put_XY({cout<<"x="<<x<<",y="<<y<<'In’;
protected:
int
x,y;};class
B:
privateA{public:int
get_SO{return
s;}voidmake_SO{get_XY(;s=x*y;}private:
ints;};int
main(){
B
objB;cout<<"It
is
object_B:\n";objB.make_SO;cout<<"S="<<objB.get_S()<<endl;objB例8-2私有继承的测试class
A
y;}class
B:private
Aprivate成员}华南理工大学计算机学院周霭如2025objB.xobjB.yobjB.sprotected:
int
x,y;};class
B
:
private
A{public:int
get_SO{returns;void
make_S(){get_
XY(;private:
int
s;};int
main(){B
objB;cout
<<"Itisobject_B:\n";objB.make_S(;cout<<"S="<<objB.get_S()<<endl;
objB
objB.x
objB.y
objB.s
#include<iostream>
例8-2
私有继承的测试using
namespace
std;classA{public:void
get_XY({cout<<"Enter
two
numbers
of
x
and
class
Avoidput_XY(){cout<<"x="<<x<<",y="<<y调用基类成员函数B:private
A华南理工大学计算机学院周霭如2025private成员{public:void
get_XY({cout<<"Enter
two
numbers
of
x
and
class
Avoid
put_XY(){cout<<"x="<<x<<",y="<<y<'n';}protected:
int
x,y;};class
B
:
private
A
class
B:private
A{public:cout<<"Itisobject_B:n";objB.make_SO;cout<<"S="<<objB.get_S()<<endl;int
get_S({return
s;}void
make_S({get_XY();
private:
int
s;#include<iostream>
例8-2
私有继承的测试using
namespace
std;classAobjB.xobjB.yobjB.s访问私有数据成员华南理工大学计算机学院周霭如2025private成员};
int
{BobjBusing
namespace
std;class
A{public:void
get_XY({cout<<"Enter
two
numbers
of
xa
class
A
voidput_XY({cout<<"x="<<x<<",y="<<y<<'In’;protected:
int
x,y;};class
B:private
A
class
B:private
A{public:int
get_SO{return
s;}void
make_SO{get_XY();s=Xprivate:
ints;};int
main(){B
objB;NC:\WINDOWs\system32\cmd.exe
Itisobject_B:Entertwo
numbers
of×and
S
=15请按任意键继续.
.
.#include<iostream>
例8-2
私有继承的测试cout<<"It
is
object_B:\n";objB.makeSO;
<<"S="<<objB.get_S()<<endl;objB.xobjB.yobjB.s回
×:35private成员华南理工大学计算机学院周霭如2025y;}objBcouty例8-3私有数据成员的测试class
Aclass
B:public
A#include<iostream>using
namespace
std;class
A{public:AO{x=1;}int
out(){returnx;}
void
addX({x++;}p
rivate:int
x;};cout<<"a.x="<<a.ouLo<<enar;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;class
B:public
A{public:BO{y=1;}int
out(Ovoidaddprivate:int
y;不能在派生类中直接访问但派生类对象建立私有数据空间{returny;}基类的私有数据成员};int
main()
{Aa;华南理工大学计算机学院周霭如2025class
A{public:AO{x=1;}int
out(){returnx;}void
addX({x++;}private:int
x;};class
B:public
A{public:BO{y=1;}int
out({returny;}void
addYO{y++;}private:inty;};int
main(){Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;N
C:\TIEDOTS\system32\cmd.exea.x=1b.
x=2b.y=2请按任意键继续.
..a.xb.x
b.y#include<iostream>using
namespace
std;例8-3
私有数据成员的测试华南理工大学计算机学院周霭如2025class
Aclass
B:public
AN
C:\TIEDOTS\system32\cmd.exea.x=1请按任意键继续
...a.x
1b.x
b.yVoaaaaY){y++;}private:inty;};int
main(){
Aa;cout<<"a.x="<<a.out()<<endl;Bb;b.addX();b.addY();cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;class
A{public:AO{x=1;}int
out(){return
x;}void
addX({x++;}private:int
x;};clas
调用构造函数#include<iostream>using
namespace
std;例8-3
私有数据成员的测试对数据成员赋值华南理工大学计算机学院周霭如2025{pu{public:AO{x=1;}int
out(){return
x;}
voidaddX({x++;}private:int
x;};class
B:public
A{public:
BO{y=1;}int
out(){return
y;}
voidaddy){y++;}private:
inty;};int
main(){Aa;cout<f"a.x="<<a.out()<<endl;Bb,b.addX();b.addY();创建派生类对象调用基类→派生类构造函数b.x=1
b.y=1b.
x=2请按任意键继续.
..cout<<"b.y="<<b.out()<<endl;b.x
1
b.y
1#include<iostream>using
namespace
std;例8-3
私有数据成员的测试cout<<"b.x="<<b.A::out()<<endl;华南理工大学计算机学院周霭如2025b.y=2publicclass
Aclass
AAa.xclass
A{public:AO{x=1;}int
out(){return
x;}void
addX({x++;}private:int
x;};class
B:public
A{public:B({y=1;}int
out(){peturn
y;}
void
addYO{y++;}private:
inty;};int
main(){Aa;cout<<a.x="<<a.out()<<endl;class
A调用基类公有成员函数b.x
+十CNC:\TIKDOTS\system32\cad.exea.x=1b.
x=2b.y=
2请按任意键继续.
..Bb;b.addX();
b.addY();
a.xcout<<"b.y="<<b.out()<<endl;b.x
2
b.y
1#include<iostream>using
namespace
std;例8-3
私有数据成员的测试cout<<"b.x="<<b.A::out()<<endl;class
B:public
A华南理工大学计算机学院周霭如2025class
A{public:AO{x=1;}int
out(){return
x;}voidaddX({x++;}private:int
x;};c{
li
:B:p(u{
;}A
调用派生类公有成员函数
β:public
Aint
out(){return
yf
}
b.y
++void
addY({yy+;}
CNC:\TIKDOTS\system32\cad.exeprivate:inty;
a.x=1};
..
22请按任意键继续.
..cout<<"a.x="<</a.out()<<endl;Bb;b.addX();
b.addY();
a.x
1cout<<"b.x="<<b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;
b.x
2
b.y
2bb1cybcBpublass#include<iostream>using
namespace
std;例8-3
私有数据成员的测试int
main(){Aa;华南理工大学计算机学院周霭如2025class
Aclass
A{public:AO{x=1;}int
out(){returnx;}void
addX({x++;}private:int
x;};class
B:public
A{public:B({y=1;}int
out(){return
y;}void
addY({y++;}private:inty;};int
main(){Aa;cout<<"a.x="<<a.out()<endl;Bb;b.addX();b.addY(;cout
<<"b.x="<<
b.A::out()<<endl;cout<<"b.y="<<b.out()<<endl;请按任意键继续a.x
1b.x
2
b.y
2class调用基类版本同名函数返回b.x的值CNC:\TIKDOTS\system32\cad.exe#include<iostream>using
namespace
std;AublicA例8-3
私有数据成员的测试华南理工大学计算机学院周霭如2025class
A{public:AO{x=1;}int
out(){return
x;}voidaddX({x++;}private:int
x;};class
B:public
A{public:B({y=1;}int
out({return
y;}void
addY({y++;}private:inty;};int
main(){Aa;cout<<"a.x="<<a.out()<kendl;Bb;b.addX();b.addY();cout
<<"b.x="<<b.A:out()<<endl;cout
<<"b.y="<<bout()
<<endl;class调用派生类版本同名函数返回b.y的值b
x=2请按任意键继续.
..a.x
1b.x
2
b.y
2#include<iostream>using
namespace
std;AublicA例8-3
私有数据成员的测试华南理工大学计算机学院周霭如2025private成员protected成员protected成员public成员protected成员private成员protected成员public成员3.
保护继承基类
派生类华南理工大学计算机学院周霭如20258.2.2重名成员派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员在派生类中使用基类的同名成员,显式地使用类名限定符:类名::成员华南理工大学计算机学院周霭如20251.
重名数据成员例:class
base{public:int
a,b;};class
derived:publicbase
{public:int
b,c;};void
f({derivedd;d.a=1;d.base::b=2;d.b=3;d.c=4;};derived
a
b
b
Cbase
a
b华南理工大学计算机学院周霭如20251.
重名数据成员例:class
base{public:int
a,b;};classderived:public
base
{public:int
b,c;};void
f(){derivedd;d.a=1;d.base::b=2;d.b=3;d.c=4;};derived
a
b
b
Cbase
a
b华南理工大学计算机学院周霭如2025derived
d1.
重名数据成员例:class
base{public:int
a,b;};classderived:public
base
{public:int
b,c;};voidf(){derived
,d;
c
,
d
;d.a
=1d.base::b=2;d.b=3;d.c=4;};derived
d
1访问从base
类继承的数据成员aderived
a
b
b
C华南理工大学计算机学院周霭如20251.
重名数据成员例:class
base{public:int
a,b;};classderived:public
base
{public:int
b,c;};voidf(){derived
d;d.a=1
;d.
base:b
=2,d.b=3;d.c=4;};basederivedderived
d访问从base类继承的b华南理工大学计算机学院周霭如2025bb2b
Caa11.
重名数据成员例:class
base{public:int
a,b;};classderived:public
base
{public:int
b,c;};void
f(){derived
d;d.a=1;d.bese
:b=2;d.b=3,d.c=4;};derived
a
b
b
C访问derived
类定义的数据成员b123base
a
b华南理工大学计算机学院周霭如2025derived
d1.
重名数据成员例:class
base{public:int
a,b;};classderived:public
base
{public:int
b,c;};void
f(){derived
d;d.a=1;d.base
::b=2;d.b=3;d
.c
=4};derived
a
b
b
C访问derived
类定义的数据成员c1234base
a
b华南理工大学计算机学院周霭如2025derivedd1.
重名数据成员例:class
base{public:int
a,b;};classderived:public
base
{public:int
b,c;};void
f(){derived
d;d.a=1;d.base::b=2;d.b=3;d.c=4;};>
基类成员的作用域延伸到所有派生类>
派生类的重名成员屏蔽基类的同名成员derived
a
b
b
C1234base
a
b华南理工大学计算机学院周霭如2025derived
d#include<iostream>
//例8-4
2.
重名成员函数using
namespace
std;class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}voidprint()class
B:public
A{public:int
b1,b2;B(int
j1=1,intj2=1){b1=j1;b2=j2;}voidprint()
//定义同名函数{cout<<"b1="<<bl<<"t'<<"b2="<<b2<<endl;}Vo1a
printAB(){A::print();print();}};int
main(){Bb;
b.A::print()
;
b.printAB(;}华南理工大学计算机学院周霭如2025//派生类对象调用基类版本同名成员函数
//派生类对象调用自身的成员函数{cout<<"a1="<<al<<nt'<<"a2="<<a2<<endl;};#include<iostream>
11例8-4
2.
重名成员函数using
namespace
std;class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}void
prim00派生类屏蔽基类同名成员函数调用自身的成员函数j2=1){b1=jl;b2=J2;T//定义同名函数{Bb;
b.A::print();b.printAB(;}华南理工大学计算机学院周霭如2025class
B:public
A
{public:int
b1,b2;B(int
j1=1,intvoid
print()//派生类对象调用基类版本同名成员函数
//派生类对象调用自身的成员函数{cout<<"D1="<<bl<<"t'<<"b2="<<b2<<endl;}{cout
<<
"a1="
<<a1
<<
"\t"
<<
"a2="
<<
a2
<<
endl
;
}Vo1a
printAB)
{A::print();-print();};int
main()};B(intj1=1,intj2=1){b1=j);b2=j2;}voidprint()
1I定义同名函数{cout<<"b1="<<bí<<"t'<<"b2="<<b2<endl;}Vo1a
printAB()void
prim00{
cout
<<
"a1="
<<
a1
<<};class
B:public
A{public:int
b1,b2;};int
main()Bb;A:
print()
b.printAB(;}华南理工大学计算机学院周霭如2025class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}'\t'<<
"a2="
<<
a2
<<
endl
;
}派生类对象调用从基类继承的同名成员函数#include<iostream>
11例8-4
2.
重名成员函数using
namespace
std;//派生类对象调用基类版本同名成员函数/
/派生类对象调用自身的成员函数A:print(print();class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}void
prim00{cout<<"al="<<al<<nt'<<"a2="<<a2<<endl;)};
classB:public
A
基类this指针voidprint()
1I定义同名函数{cout<<"b1="<<bí<<"t'<<"b2="<<b2<endl;}Vo1a
printAB()#include<iostream>
11例8-4
2.
重名成员函数using
namespace
std;{public:int
b1,b2;B(int
j1=1,intj2=1){b1=jY;b2=j2;}Bb;
A:print()
b.printAB(;}华南理工大学计算机学院周霭如2025//派生类对象调用基类版本同名成员函数
/
/派生类对象调用自身的成员函数A:print(print();};int
main()指向派生类对象class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}voidprint(){cout<<"al="<<al<<'\t'<<"a2="<<a2<<endl;}};class
B:public
A{public:int
b1,b2;B(int
j1=1,intj2=1){b1=j1;b2=j2;}voidprint()
//定义同名函数{cout<<"b1="<<b1<<'t'<<"b2="<void
printAB({A::print();
//派生类对象调人print();
/派生类对象调人
请按任意键继续
.
.};int
main()#include<iostream>
11例8-4
2.
重名成员函数using
namespace
std;{Bb;
b.A::print()
;
b.printAB(;}华南理工大学计算机学院周霭如2025#include<iostream>
//例8-4
2.
重名成员函数using
namespace
std;class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}void
print(){c
out<<"al="<<al<<'t'<<"a2="<<a2<<endl;}};class
B:public
A{public:int
b1,b2;B(int
j1=1,intj2=1){b1=j1;b2=j2;}N
C:\WINDOWS\system32\cmd.exe
a1=0a1=0
a2=0b1=1
b2=1请按任意键继续.void
printAB(){A::print();print();};int
main(){Bb;
b.A::print();b.printAB();}华南理工大学计算机学院周霭如2025voidprint()
//定义同名函数
{cout<<"b1="<<b1<<'t'<<"b2="<//派生类对象调人
//派生类对象调#include<iostream>
//例8-4
2.
重名成员函数using
namespace
std;class
A{public:int
a1,a2;A(int
i1=0,int
i2=0){al=i1;a2=i2;}void
print(){c
out<<"al="<<al<<'t'<<"a2="<<a2<<endl;}};class
B:public
A{public:int
b1,b2;B(int
j1=1,intj2=1){b1=j1;b2=j2;}voidprint()
//定义同名函数{cout<<"b1="<<b1<<'t'<<"b2="<<void
printAB(){A::
print();
//派生类
对象调print();//派生类对象调人};int
main()b{Bb;b.A::print();.printAB();}华南理工大学计算机学院周霭如2025#include<iostream>
//例8-4
2.
重名成员函数using
namespace
std;class
A{public:int
a1,a2;A(inti¹=0,inti2=0){al=i1;a2=通过继承,类B具有两个同名成员函数void
print(){cout<<"a1="<<a1<<'It'<<};class
B:public
A{public:int
b1,b2;B(intj1=1,intj2=1){b1=j1;b2
voidprint()//定义同
{cout<<"b1="<<bl<<t'<<void
printAB(){A::print();
//派生类print();
//派生类};int
main(){Bb;
b.A::print()
;
b.printAB(;}华南理工大学计算机学院周霭如2025voidA::print();void
B::print();print(A*this);print(B*this
);/
/void//void{cout<<"a1="<<a1<<'It'<<};class
B:public
A{public:int
b1,b2;B(intj1=1,intj2=1){b1=j1;b2voidprint()//定义同
{cout<<"b1="<<bl<<'<<void
printAB({A::print();
//派生类print();
//派生类};int
main()class
A{public:int
a1,a2;A(inti¹=0,inti2=0){al=i1;a2=通过继承,类B具有两个同名成员函数void
print()>派生类也是基类,基类指针可以指向派生类对象>
派生类中定义与基类同名的成员函数,
称为重载成员函数#include<iostream>
//例8-4
2.
重名成员函数using
namespace
std;{Bb;
b.A::print()
;
b.printAB(;}华南理工大学计算机学院周霭如2025print(A*this);print(B*this
);voidA::print();void
B::print();//void//void8.2.3
派生类中访问静态成员基类定义的静态成员,将被所有派生类共享>
根据静态成员自身的访问特性和派生类的继承方式,在类层次
体系中具有不同的访问性质派生类中访问静态成员,用以下形式显式说明:类名::成员或通过对象访问
对象名.成员华南理工大学计算机学院周霭如2025using
namespace
std;class
B{public:static
voidAdd(){i++;}staticint
i;void
out(){cout<<"static
i="<<i<<endl;}};int
B::i=0;classD:privateB{public:void
f(){i=5;Add();B::i++;B::Add();int
main(){Bx;Dy;X.Add();x.out();y.f();cout<<"staticcout<<"static//cout<<"static//例8-5在派生类中访问静态成员#include<iostream>i="<<B::i<<endl;i="<<x.i<<endl;i="<<y.i<<endl;华南理工大学计算机学院周霭如2025void
out(){cout<<"static
i="<<i<<endl;}};int
B::i=0;class
D:private
B{public:void
f(){i=5;Add();B::i++;B::Add();#include<iostream>using
namespace
std;class
B{public:static
void
Add(){i++;}static
int
1;静态成员函数int
main(){Bx;Dy;X.Add();x.out();y.f();cout<<"staticcout<<"static//cout<<"static}i="<<B::i<<endl;i="<<x.i<<endl;i="<<y.i<<endl;11例18-5在派
生类中访问静态成员华南理工大学计算机学院周霭如2025voidout(){couk<<"static
i="<<i<<endl;}
};int
B::i=0;class
D:private
B{public:void
f(){i=5;Add();B::i++;B::Add();//例8-5在派生类中访问静态成员#include<iostream>using
namespace
std;class
B{public:static
void
Add({i++;}staticinti;x.out();y.f();cout<<"staticcout<<"static//cout<<"static}静态数据成员in(){Bx;Dy;
X.Add();i="<<B::i<<endl;i="<<x.i<<endl;i="<<y.i<<endl;华南理工大学计算机学院周霭如2025int
main(){Bx;Dy;X.Add();i="<<i<<endl;}i是类D的私有静态数据成员
类中可见coursstaticcout<<"static//cout<<"static}using
namespace
std;class
B{public:static
void
Add({i++;}static
int
i;void
out(){cout<<"static};int
B::i=0;class
D:private
B{public:void
fO{i=5;Add();B::i++;B::Add();//例8-5在派生类中访问静态成员#include<iostream>i="<<B::i<<endl;i="<<x.i<<endl;i="<<y.i<<endl;华南理工大学计算机学院周霭如2025using
namespace
std;class
B{public:static
void
Add(){i++;}static
int
i;void
out(){cout<<"static};int
B::i=0;class
D:private
Bint
main(){Bx;Dy;X.Add();i="<<i<<endl;}Add()
是类D的私有静态成员函数类中可调用DuauI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省自贡市2027届数学四上期末检测试题含解析
- 永德县2027届四年级数学第一学期期末预测试题含解析
- 2026年1‑6月护理工作制度培训考核试题
- 紫金县2027届四年级数学第一学期期末达标测试试题含解析
- GB-T 47805-2026《潜水器用水密电连接器试验方法》
- 泰州市2026届高三下第一次测试生物试题含解析
- 2026中国通信设备制造业市场竞争分析市场现状供需分析及投资评估规划分析研究报告
- 2026全球半导体行业市场供需分析及投资评估规划分析研究报告
- 2026中国医疗行业现状及投资评估规划分析研究报告
- 机器人行业研究:谷歌重磅发布GeminiRobotics2模型宇树科创板发行在即
- 人工智能应用中的泄密风险防控
- 彩色压印艺术地坪施工技术指导
- 2026年烟草校招香精香料常识题库含答案
- 川大定向协议书
- 口腔科2025年核与辐射安全隐患自查报告
- 商贸公司财务审批流程及控制制度
- 车库门应急预案(3篇)
- 化妆教学合同协议
- 2025年河北省机关事业单位工人技能等级考试《公共基础知识》备考题及答案
- 辐射安全操作规程
- 超市安全知识员工培训课件
评论
0/150
提交评论