zoukankan      html  css  js  c++  java
  • 隐藏私有变量的句柄控制

    在编写程序时,为了不让封装的数据类型及参数让使用者看到,只保留public部分的接口函数,将内部变量封装起来,利用结构体定义到实现函数中,可以使用如下的句柄控制:

    头文件"control.h"

     1 #pragma once
     2 
     3 class Control
     4 {
     5     struct Cheshire;
     6     //定义一个结构体,默认为权限为private,只有类的内部可以访问。
     7     Cheshire* smile;
     8     //定义一个结构体类型的指针,用于访问结构体的内部成员。
     9 public:
    10     void init();//公共成员函数
    11     void clear();
    12     int read();
    13     void change(int value);
    14 };

    实现文件"control.cpp"

     1 #include "control.h"
     2 struct Control::Cheshire //结构体的实现
     3 { 
     4     int i; 
     5 };
     6 void Control::init()
     7 {
     8     smile = new Cheshire;
     9     /*开辟一块结构体类型的指针内存空间,
    10     smile为Control类下面的私有成员变量,
    11     但init()为内部成员函数,
    12     具有访问私有成员函数权限.*/
    13     smile->i = 0;
    14     //指针访问结构体的成员变量。
    15 }
    16 void Control::clear()
    17 {
    18     delete smile;
    19     //释放开辟的指针内存空间
    20 }
    21 int Control::read()
    22 {
    23     return smile->i;
    24 }
    25 void Control::change(int value)
    26 {
    27     smile->i = value;
    28 }

    main文件"main.cpp"

     1 #include "control.h"
     2 
     3 int main(int argc,char* argv[])
     4 {
     5 
     6     Control handle;
     7     //创建一个Control对象,
     8     //向自身成员函数发送消息
     9     handle.init();
    10     handle.change(5);
    11     handle.read();
    12     handle.clear();
    13 }

    这样在头文件中就看不到类中的变量,在实现文件中隐藏了起来。

  • 相关阅读:
    基于opencv的摄像头的标定
    图像的角点简介
    周转时间和平均带权时间等
    QT各个版本的下载的地址
    参考文献格式
    sublime中的emmet插件的使用技巧
    sublime快捷键
    CSS布局居中
    Markdown 语法说明(简体中文版)
    sql作业题
  • 原文地址:https://www.cnblogs.com/fuzhuoxin/p/12097754.html
Copyright © 2011-2022 走看看