c++中对于访问权限的控制..

2017-11-25  本文已影响0人  一ccc

看深度探索c++对象模型时感觉对c++继承中的权限控制都忘记了..所以写一个复习的..基本是复制粘贴喽.

受保护的成员protected
//第三条的代码说明
#include<iostream>
using namespace std;
class Point {
public:
    Point(float x = 0.0) :_x(x) {}
protected:
    float _x;
};
class  Point2d:public Point
{
public:
    void asd(Point2d &);
    void asd1(Point &);
};
void Point2d::asd(Point2d &a)
{
    cout << a._x;
}
void Point2d::asd1(Point &a)
{
    cout << a._x;
}

1.png
class Point2d:public Point
这个public派生类访问说明符的目的是控制派生类用户(包括派生类的派生类在内)对于基类成员的访问权限,对派生类本身没有影响.
#include<iostream>
using namespace std;
class Point {
public:
    Point(float x = 0.0, float y = 0.0) :_x(x), _y(y) {}
    void print() { cout << _x<< _y; }
protected:
    float _x;
private:
    float _y;
};
class  Point2d:public Point
{
public:
    int asd() { return _x; }
    int asd1() { return _y; }
};
class  Point3d :private Point
{
public:
    int asd() { return _x; }
    int asd1() { return _y; }
};
int main()
{
    Point2d a;
    Point3d b;
    a.print();
    b.print();
}
2.png

无论派生类访问说明符是public还是protected基类中的private都无法访问.

3.png

但是因为Point3d的派生类访问符是private所以Point3d的
用户无法访问基类中的print函数.


运行环境 vs2017
[1]斯坦利·李普曼,约瑟·拉乔伊,芭芭拉·默.C++ Primer中文版(第5版)[J].中国科技信息,2013(20):34.
ps:参考文献有点酷...

上一篇下一篇

猜你喜欢

热点阅读