共享数据的保护 const

摘要:C++中 虽然采用了很多措施(private)来增加数据的安全性,但是有些数据却是共享的,人们可以通过不同的途径访问同一数据对象,这种共享在不同程度上破坏了数据的安全性。为此引入常类型,既保证了数据共享,又防止数据被破坏!

  常类型时指用const说明的类型,常类型的变量或者对象成员的值在程序运行的过程中使不允许修改的。

  1.常引用:const 类型& 引用名

     常用来做函数形参,即前面提到的只读不写!

  2.常对象:const 类名 对象名(参数表);

     被说明的对象为常对象,在对象的整个生存期内,对象的数据成员值不允许改变!

  3.常对象成员:

    (1).常数据成员:可以使常量或者常引用。

      注意:如果使用const说明数据成员为常数据成员,那么有且只能在构造函数中只能通过初始化列表对该数据成员进行初始化!(重要!)

    (2).常成员函数:类型  函数名(参数表)  const;

      注意:声明和定义常成员函数的时候都要加const,但在调用的时候不必加const。

      1.如果一个对象被说明为常对象,则通过该对象只能调用它的常成员函数,而不能调用其他成员函数,也就是说,常成员函数是常对象对外的唯一接

         口!

      2.常成员函数不能更新对象的数据成员,也不能调用该类的普通成员函数,这就保证了常成员函数不能更新数据成员的值!

总结:由于数据共享在对象使用中几乎都要用到,所以深入理解const的机制各种常类型,十分有必要!

时间: 2024-12-18 12:08:38

共享数据的保护 const的相关文章

C++共享数据的保护

共享数据的保护:常类型 常类型的对象必须初始化,且这个值不能被更新 常引用:被引用的对象不能更新 const 类型说明符 & 引用名 常对象:必须进行初始化,不能更新 类名 const 对象名 常数组:数组元素不能更新 类型说明符 const 数组名[大小] 常指针:指向常量的指针 C++共享数据的保护,布布扣,bubuko.com

并发共享数据

本文是关于并发共享数据的一些杂谈, 就是一时回忆起这方面的东西然后记录下来...... 并发的竞争主要是涉及到数据的写操作,如果所有的线程单单是读操作,不会对共享数据产生竞争. 并发的访问共享数据,竞争的bug会随着时间和数据的规模越大而增大.很难排查,所以在开发并发性程序时,需要使用好并发的同步与互斥等复杂的方法来避免并发竞争,保护共享数据. 保护共享数据就是保护不变量被破坏的中间状态只有一个线程访问. 保护并发的方法: 对数据进行某种保护机制(例如 互斥量),当某个线程访问的时候,其他线程对

C++11并发编程4------线程间共享数据

举个例子: 刚参加工作的你,只能租房住,嫌房租贵就和别人合租了,两个人住一起只有一个洗手间,每天早上起床的时候,如果你室友在洗手间,你就只能等着,如果你强行进去,那画面就不可描述了.同样的问题,如果多个线程共享一个数据,并且对数据有读有写,那就需要注意共享数据的保护了. 使用互斥量保护共享数据: 当访问共享数据前,使用互斥量奖相关数据锁住,当访问结束后,再将数据解锁.互斥量是C++中一种最通用的数据保护机制. C++中使用互斥量: 原文地址:https://www.cnblogs.com/418

c++11 多线程间共享数据 <c++ concurrency in action>

本章主要描述多线程之间共享数据的方法.存在问题.解决方案. 第一部分:mutex在保护共享数据中的使用 1.最简单使用: #include<mutex> std::mutex some_mutex; void func(){ some_mutex.lock(); //访问共享数据 .... some_mutex.unlock(); } 2.向lock_guard推进: 但是不推荐直接使用lock.unlock,因为unlock一定要调用,如果由于你的疏忽或前面的异常将会导致问题,再次利用RAI

详解 Qt 线程间共享数据(用信号槽方式)

使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的. Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容.Qt线程间共享数据主要有两种方式: 使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的: 使用singal/slot机制,把数据从一个线程传递到另外一个线程. 第一种办法在各个编程语言都使用普遍,而第二种方式倒是QT的特有方式,下面主要学习一

windows核心编程之进程间共享数据

有时候我们会遇到window进程间共享数据的需求,例如说我想知道系统当前有多少某个进程的实例. 我们能够在程序中定义一个全局变量.初始化为0.每当程序启动后就加1.当然我们我们能够借助第三方介质来储存这个变量,然后解析. 这样做必须做到先写入后解析.不能实时更新数据.假设不考虑其它储存介质.仅仅是进程中的通信,应该怎么做呢?windows提供了一些可行的方法,以下介绍经常使用的两种. 一.共享数据段 #include "stdafx.h" #include <Windows.h&

数据共享之共享数据带来的问题

改动共享数据会给共享数据带来问题.假设共享的数据是仅仅读的话,就不会带来问题. 假设数据能够改动.有超过两个以上的线程改动数据就会带来问题. 必须用一些方法来消除问题. 资源竞争(race condition) 资源竞争是指在多线程环境下,程序结果的输出依赖于相关线程的运行顺序.英文:A race condition is anything where the outcome depends on the relative ordering of execution of operations

详解 Qt 线程间共享数据(使用signal/slot传递数据,线程间传递信号会立刻返回,但也可通过connect改变)

使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的. Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容.Qt线程间共享数据主要有两种方式: 使用共享内存.即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到共享数据的目的: 使用singal/slot机制,把数据从一个线程传递到另外一个线程. 第一种办法在各个编程语言都使用普遍,而第二种方式倒是QT的特有方式,下面主要学习一

【转】C数据存储(包括const存储在哪,C++不同部分我在文中用红字已指出)

非原创(文中红字为自己见解,如有不对,请大神指点) 程序由指令和数据组成,C语言程序亦是如此.开发者在编写程序的时候往往需要根据不同数据的特点以及程序需求来选择不同的数据存储方式,那么在C语言中数据的存储分为哪些方式呢? C程序大致来讲可以分为四个数据区:常量区,静态去,堆区,栈区. 其中常量区存储了未被作为初始化使用的字符串常量和被const修饰的全局变量,其特点是只可被访问不可被写入,生命周期同程序的运行过程. 静态区存储了全部的全局变量,和所有被static修饰的变量(包括全局和局部),其