您现在的位置是:主页 > news > 任丘市网站建设/活动软文模板
任丘市网站建设/活动软文模板
admin2025/6/29 8:30:41【news】
简介任丘市网站建设,活动软文模板,3d动画制作收费标准,自己有网站怎么做优化/* 表4.3 公有继承的访问规则 ---------------------------------------------------基类中的成员 | 私有成员 | 公有成员 | 保护成员 | ---------------------------------------------------|内部访问| 不可访问 | 可访问 | 可访问 | 访问方式| | | …
任丘市网站建设,活动软文模板,3d动画制作收费标准,自己有网站怎么做优化/* 表4.3 公有继承的访问规则
---------------------------------------------------基类中的成员 | 私有成员 | 公有成员 | 保护成员 |
---------------------------------------------------|内部访问| 不可访问 | 可访问 | 可访问 |
访问方式| | | …
/* 表4.3 公有继承的访问规则
---------------------------------------------------基类中的成员 | 私有成员 | 公有成员 | 保护成员 |
---------------------------------------------------|内部访问| 不可访问 | 可访问 | 可访问 |
访问方式| | | | ||对象访问| 不可访问 | 可访问 | 不可访问 |
---------------------------------------------------
*/
//例4.3 公有继承的访问规则举例。
#include<iostream>
using namespace std;
class Base{ //声明基类Basepublic:void setxy(int m,int n){x = m;y = n;}void showxy(){cout<<"x="<<x<<endl;cout<<"y="<<y<<endl;}private:int x;protected:int y;
};
class Derived: public Base{ //声明基类Base的公有派生类Derivedpublic:void setxyz(int m,int n,int l){setxy(m,n); //函数setxy在派生类中是public成员,派生类成员函数可以访问z=1; }void showxyz(){//cout<<"x="<<x<<endl; //错误,x在类Derived中为不可直接访问成员cout<<"y="<<y<<endl; //正确,y在类Derived中为保护成员,派生类成员函数可以访问cout<<"z="<<z<<endl;}private:int z;
};
int main(){Derived obj;obj.setxyz(30,40,50);obj.showxy(); //正确,函数showxy在类Derived中为公有成员,派生类对象能访问它//obj.y=60; //错误,y在类Derived中为保护成员,派生类对象不能访问它obj.showxyz();return 0;
}
/*例中类Derived由类Base公有派生出来,所以类Base中的两个公有成员函数setxy和
showxy在公有派生类中仍是公有成员。因此,它们可以分别被派生类的成员函数setxyz
和派生类的对象obj访问。基类Base中的数据成员x是私有成员,它在派生类中是不能直
接访问的,所以在成员函数showxyz中对x的访问是错误的。基类Base中的数据成员y是
保护成员,它在公有派生类中仍是保护成员,所以在派生类成员函数showxyz中对y的访
问是正确的,但是派生类对象obj不能访问y。如果将例中成员函数showxyz改成如下形式:void showxyz(){showxy();cout<<"z="<<z<<endl;}并且去掉主函数main中的错误语句,重新编译后程序将顺利通过。修改后,程序运行结果如下:x=30y=40x=30y=40z=50说明:需要再次强调,派生类以公有继承的方式继承了基类,并不意味着派生类可以访问基类
的私有成员。如在例4.3的派生类的成员函数void showxyz(){cout<<"x="<<x<<endl; //错误cout<<"y="<<y<<endl;cout<<"z="<<z<<endl;}
中,企图访问基类base的私有成员x,是错误的,因为基类无论怎样被继承,它的私有成员
对派生类而言都是不能直接访问的。
*/