面向对象-数据保护与共享-常模块

简介: 面向对象-数据保护与共享-常模块

有空会把笔记整理下的

#include<bits/stdc++.h>
using namespace std;
/*
出于数据保护与共享,出现了常模块。顾名思义,常模块就是构造后数据不允许变化的模块。
常数据成员
*/
class Clock{
    private:
        int h,m,s;
        const int maxn=100;
///常数据成员:在对象构造后其值不会改变,所以必须在构造时对其进行初始化
///保护机制:任何的函数都无法修改其值
        static int cnt;
///静态数据成员,为类共有,对象和类都具有访问权
    public:
        Clock(int hh,int mm,int ss):h(hh),m(mm),s(ss){///构造函数
            cnt=cnt+1;
            cout<<"构造函数"<<endl;
        }
        Clock(const Clock& c):h(c.h),m(c.m),s(c.s){///常引用
            cnt=cnt+1;
            ///c.h=110;//不能通过引用的方式改变对象的值,但是原先的数据是可以改变的
        }
        Clock(Clock& c):h(c.h),m(c.m),s(c.s){///普通引用
            cnt=cnt+1;
            c.s=110;
            ///表明数据可以改变,只是不要能通过常引用改变
        }
        void fs()const{///常函数成员:不允许修改数据成员的一个函数成员
            //cout<<h<<" "<<m<<" "<<s<endl;
        }
        static void shoucnt(){///静态函数成员
            cout<<"cnt="<<cnt<<endl;
        }
        void showtime()const{///常函数
            cout<<"常函数"<<endl;
            fs();
        }
        void showtime(){
            cout<<"普通函数"<<endl;///普通函数
        }
        ~Clock(){///析构函数
            cout<<"析构函数"<<endl;
            cnt=cnt-1;
        }
};
void showclock(const Clock& c){
    cout<<"showclock begin"<<" "<<&c<<endl;
    c.showtime();
    cout<<"showclock end"<<" "<<endl;
}
int Clock::cnt=0;
int main(){
    Clock::shoucnt();///cnt=0
    Clock c(4,5,6);
    c.shoucnt();///cnt=1说明有了一个对象c
    {
        Clock c2(3,5,8);
        Clock::shoucnt();///cnt=2 说明比上面多了一个对象c2
    }
    Clock::shoucnt();///cnt=1说明c2的生存期只是大括号内,超出后就被析构
///常对象:一旦构造完成,该对象的所有数据成员,在生命期间不能被修改
///语法如下:
    Clock const c1(7,8,9);
    c1.showtime();///常对象只能调用常函数
    Clock c11(7,9,8);
    c11.showtime();///普通对象可以调用常函数,也能调用普通函数,后者优先
/**常对象的保护机制:
1.任何函数都无法修改其值
2.常对象调用函数成员时必须保证该函数没有修改常对象的值
 **/
///由于保护机制,常对象不能调用普通函数
    return 0;
}
/*
运行结果:
cnt=0
构造函数
cnt=1
构造函数
cnt=2
析构函数
cnt=1
构造函数
常函数
构造函数
普通函数
析构函数
析构函数
析构函数
*/
目录
相关文章
|
4月前
|
API 开发工具 对象存储
在PAI平台上,如何实现不同编程语言任务之间的数据共享?
【7月更文挑战第1天】在PAI平台上,如何实现不同编程语言任务之间的数据共享?
123 58
|
3月前
|
存储 安全 网络安全
|
3月前
|
监控 安全 网络安全
零信任架构规范
零信任架构规范
82 1
|
6月前
|
监控 安全 PHP
构建安全防线:在云计算时代维护网络与信息安全深入理解PHP的命名空间与自动加载机制
【5月更文挑战第29天】 随着企业和个人日益依赖云服务,云计算的便捷性和成本效益已得到广泛认可。然而,数据存储和处理的云端迁移也带来了新的挑战,尤其是网络安全和信息保护方面的问题。本文将深入探讨云计算环境中的安全威胁,包括数据泄露、不正当访问和服务中断等,以及为应对这些威胁而采取的策略和技术措施。我们将重点讨论最新的加密技术、身份验证机制、入侵检测系统(IDS)以及合规性监控工具,它们共同构成了维护云服务安全的多层次防御体系。 【5月更文挑战第29天】在PHP的世界中,命名空间和自动加载机制是现代PHP应用程序开发中不可或缺的组成部分。它们不仅解决了代码重用性和依赖管理的问题,而且促进了更为
|
安全 网络协议 网络安全
《计算机系统与网络安全》 第九章 访问控制技术
《计算机系统与网络安全》 第九章 访问控制技术
86 0
|
缓存 前端开发
案例21-面向对象复用、面向对象实现、立体化权限
案例21-面向对象复用、面向对象实现、立体化权限
|
存储 C++
面向对象实验 ——(三)数据的保护与共享
面向对象实验 ——(三)数据的保护与共享
96 0
面向对象实验 ——(三)数据的保护与共享
|
监控 安全 网络安全
可见性和分析在零信任架构中的作用
可见性和分析在零信任架构中的作用
175 0
|
云安全 机器学习/深度学习 人工智能
看了才知道,数据安全全满贯是这么定义的
看了才知道,数据安全全满贯是这么定义的
140 0
看了才知道,数据安全全满贯是这么定义的