zsmm 发表于 2010-1-11 13:25:57

C++循序渐进

1、类内部private/protected/public的使用。
(一)、类成员的访问。不管是类的成员变量还是成员函数,对它们的访问都必须通过类的对象来完成,也就是说必须实例化类的对象,然后才能通过类对象来访问类成员。
void main()
{
        CBaseTest Bct;//声明一个CBaseTest类对象
        //以下对类成员的访问都将失败
        iBPri=1;
        BPri();
       
        iBPro=2;
        BPro();

        iBPub;
        BPub();       
}
Output窗口错误代码如下:
F:\zs\Classtest\Classtest.cpp(101) : error C2065: 'iBPri' : undeclared identifier
F:\zs\Classtest\Classtest.cpp(102) : error C2065: 'BPri' : undeclared identifier
F:\zs\Classtest\Classtest.cpp(104) : error C2065: 'iBPro' : undeclared identifier
F:\zs\Classtest\Classtest.cpp(105) : error C2065: 'BPro' : undeclared identifier
F:\zs\Classtest\Classtest.cpp(107) : error C2065: 'iBPub' : undeclared identifier
F:\zs\Classtest\Classtest.cpp(108) : error C2065: 'BPub' : undeclared identifier
可以修改代码如下:
void main()
{
        CBaseTest Bct;//声明一个CBaseTest类对象

        Bct.iBPub;
        Bct.BPub();       
}
运行结果如下:

基类私有变量:iBPri=3
基类保护变量:iBPro=3
基类公有变量:iBPub=3
基类公有函数调用了!

基类私有变量:iBPri=1
基类私有函数调用了!

基类私有变量:iBPri=2
基类保护变量:iBPro=2
基类保护函数调用了!

基类私有变量:iBPri=1
基类私有函数调用了!

Press any key to continue

为什么会是这样子哪?(至于我为什么不通过访问CBaseTest类对象Bct访问iBPro、BPro()、iBPub和BPub()这4个类成员,稍后的学习再讨论。)我不是已经在类内部对这些成员声明了吗?为什么还是运行出错哪?我们可以把类即由class定义的这种数据类型看成是由简单数据类型(比如int、float、double等)构成的复杂数据类型,它是一个有机的整体,不可分割。它内部的成员不可以拿出来单独使用,必须通过类的实例来访问。从上述的运行结果就可以看出来。
                                        int iBPri;
                                        void BPri();
                                        int iBPro;
                                        void BPro();
                                        int iBPub;
                                        void BPub();
VC++6.0工程ourdev_524816.rar(文件大小:212K) (原文件名:Classtest.rar)

zsmm 发表于 2010-1-11 13:26:28

自己坐个沙发!!!

guolun 发表于 2010-2-4 10:33:48

刚学这个,还看不懂。

gxy508 发表于 2010-2-4 10:36:56

mark
页: [1]
查看完整版本: C++循序渐进