51CTO技术论坛_中国领先的IT技术社区's Archiver

otc15tt60777 发表于 2007-8-12 10:39

访问说明符的 “:"

成员访问说明符private之后,下一个访问说明符之前所有数据成员和成员函数不同只能由该类的成员函数访问。成员说明符之后总有冒号(:),并在类定义中以不同的顺序多次出现。
H&m$n S#}|9e
/x._)@R%x'Q/Yu'K"r~ "下文将使用成员访问说明符public和private(不加冒号)"LN^%t8~.v
1b|\N s`)Glz(q
这里的  ”成员访问说明符public和private(不加冒号)"” 不明白

otc15tt60777 发表于 2007-8-12 12:31

成员访问说明符 和成员说明符的区别

ribut9225 发表于 2007-8-13 08:38

不太看得懂LZ的意思(T+?\BiF,^&Us

tVe-T+PV-]R 类的访问控制
#^1n]7K#qs _| privat 私有
D Hk$~ Ag public  公有
%bf!_g1F.V 比如类:"} OY/mnYZ g Dg
L2uG!d9n0G hy
class box
?5WV,cF#@ {,Q.q"i}$XH@'utd3E
     public:
*|"K3G7a$H^\ }S              int x,int y;
_3?-VM+u              int getZ();G5x ^zHH%N%S i
     private:
"N:|E'^Q             int  z;
UR/A+V&yrr V%c }?3A;OT0P WA
那么j(z ry*wc7fER
x和y是公有数据成员,可以被外部成员函数调用,I'PMz\ P9|.B
z是么有成员函数,只能在类内部使用
"[+]3p2mtB 2uu#Szc s/O
比如代码.WuL-i:E6b&P2ys
box mybox;
l/Sr5cM | u2al .?T:@!PF)h;u
box.x=20;   //正确n0Y6Q6VX}._
box.z=10;   //错误

otc15tt60777 发表于 2007-8-13 17:29

这个我知道呀PI M.j"_K5e;l,q:W-c
~ NY(l)hC Y"UFq.d
书上说的这个 ”成员访问说明符public和private(不加冒号)"” 不明白

ribut9225 发表于 2007-8-14 08:48

[quote]原帖由 [i]otc15tt60777[/i] 于 2007-8-13 17:29 发表.EpC(y&ZAk/dU
这个我知道呀
"I~#MODDHb
3fVOi6S*d 书上说的这个 ”成员访问说明符public和private(不加冒号)"” 不明白 [/quote]^1Uk n tA
"[2CSR;H|
"?&b ub-_?y*Y~
////////////////////////t O{!^K K

7R#[0Rhd%bS)D2Y |.Y(iV\I
hX w6G?)k
LZ在看什么书??9g'K k2s,SU w-ge
sOl8[&Hz fJ7pU
偶翻了一下书,没提到这段
6Q-ij EL$g.?%F 偶是看《标准C++编程宝典》

285188016 发表于 2007-8-15 13:06

哈哈`'h#y$I0wD7G
我估计1楼的哥们看的是《Visual C++ .NET高级编程》原话是:l*Xr,df/yr
成员访问说明符后面都需要加上冒号(:),它们可以在一个类定义中以任何次序重复使用。在下面,我们在提到成员访问说明符public和private时将不带冒号。

otc15tt60777 发表于 2007-8-15 23:29

我看的是  how to programma c++
n'O"u[M9hx
o6L"r#rVHu+t7T 还是不明白 谁能给个具体列子

ribut9225 发表于 2007-8-16 08:59

例了
&z Q hf&@9\FG d'RLn2v S
class box*{3CpR2^;c
{j~9UYlC
     public:     //以下为公有成员
cV-Ow9k7j ]              int getX();
#t!E;C6IaW4U-_              void setX( int x);
@\ @yPw o'm G      private: //以下为私有成员,只有类成员才能直接访问
*B(LiN"Lwi0d RYy.e#S             int x;
nR uEc i };
Bju$EDF@;H /pw1sa9j-AH+xY
这个类中qA8x |-X|u
getX函数和setX函数为公有成员,类的实例可以直访问
(d \ I1g:d)a/b*j| 而x这个类数据成员是不能直接访问的

ribut9225 发表于 2007-8-28 08:49

偶有些明白楼主的意思了jf'Ke7W.P1rS~

xq8F5A:`Z 两个类A,B5L g)Z"Hx4N2h-J D
class A
B2[ r h#Sc {g0~v A3T ~h |
   public:
+I l$Fzu#`         int a_x,a_y,a_z; }5G%k-g8Y,i eW4E
}mya;
0[8x0xEX#^YB
'V4^jR*l8A5FodP class B
uX&x;],M9k W {
2O+LB]0Sh         public:
l H xW*rHw Na                 int b_x,b_y,b_z;
;Dp8t[6L0q)|         public:
$n"}N[sl                 int  fu_getA_x();g GBClN$lr$a#@
}
5@3yW5A+AI\n ,f(I"[ B@,^
int B::fu_getA_x()
|`uR6\ n&n(f {(aFC"wASoE0n.E
        return mya:a_x;  //这里直接调用类A里的数据成员a_x
({Pua:ELe }

ribut9225 发表于 2007-8-28 08:51

偶有些明白楼主的意思了ZR!@f;tG4Ug9t
,Z%[CuDM H&h9X%e
两个类A,B
v-FJrs*]A"F!i+f^,k class A
y9xY V}j Cv {:@LKq(Wi
   public:
M3]\&_g.y5^         int a_x,a_y,a_z;
p CL-c4hi,L:vm }mya;
`o yzHS1q[(D%V b;YKNZH yU
class BTTFoN/W7Q
{L"a3RGV _-d
        public:
u!E+H V|M                 int b_x,b_y,b_z;
I~+M*J n9Z)N#|;C9A         public:/r c7qomm/xc+Hm
                int  fu_getA_x();  //获取A类里的数据成员a_x的值
)Q%Hq']5k!r                 int fu_getB_x();        //获取自己类里的数据成员b_x的值 fN6n w*jL_*U}
}
5y!`nf MOA Q?r0U,Ic v]
int B::fu_getA_x()
3@O#o%K@ {
._xuti c@C         return mya:a_x;  //这里直接调用类A里的数据成员a_xd5goX} RJ$P
} pN&w0cP?O5w \mg

d[yexFkh int b::fu_getB_x())bA c ]GT-c6o}!C#Y
{BO?f7~yU7|"~
        return b_x;   //这里调用本类里的数据成员,可以不加:+`7Is*q{
}

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.