zoukankan      html  css  js  c++  java
  • 访问控制

    public: 之后的成员在整个程序内可被访问

    private:之后的成员可以被类的成员函数访问,但不能被使用该类的代码访问,private部分封装(隐藏)类的实现细节

    一般数据成员和作为实现部分的函数跟在private之后。成员函数在调用时会隐式地增加 this 指针,指向调用它的对象,从而使用该对象的成员;

    (class 和struct 区别:struct 和 class的默认访问权限不同,类在第一个访问说明符之前的成员是public的,而class是private的)

    公有成员函数提供类与外界的通信接口。但是有时需要定义一些函数,不是类的成员,但又频繁的访问类的私有成员,可以将这些类定义为友元函数。

    友元: friend

       类允许其他类或函数访问其非公有成员,方法是令其他类或函数成为它的友元。

    read, print ,add函数不是类的成员,把函数作为友元,只要在增加一条以friend 关键字开始的函数声明语句。

     

    友元声明只能出现在类定义的内部,友元不是类的成员,也不受它所在区域访问控制级别的约束。友元声明仅仅指定了访问的权限,而非一个通常意义上的函数声明。如果希望用户能条用某个友元函数,需要在友元声明之外再专门对函数进行一次声明。友元函数在调用时会隐式地增加 this 指针,指向调用它的对象,从而使用该对象的成员;

     也可以使用友元类:

    friend class <友元类名>;

    关于友元,有两点需要说明:

    • 友元的关系是单向的而不是双向的。如果声明了类 B 是类 A 的友元类,不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中的 private 成员。
    • 友元的关系不能传递。如果类 B 是类 A 的友元类,类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。
  • 相关阅读:
    声明对象指针,调用构造、析构函数的多种情况
    [C++ STL] 常用算法总结
    [C++ STL] map使用详解
    [C++ STL] set使用详解
    [C++ STL] list使用详解
    [C++ STL] deque使用详解
    Servlet课程0424(一) 通过实现Servlet接口来开发Servlet
    CSS盒子模型
    Spring学习之第一个hello world程序
    Java基础面试题
  • 原文地址:https://www.cnblogs.com/fanhaha/p/7096227.html
Copyright © 2011-2022 走看看