美文网首页C/C++
数据的共享与保护

数据的共享与保护

作者: Cqlismy | 来源:发表于2019-03-08 22:51 被阅读0次

1、标识符的作用域与可见性

作用域的分类有:

1)函数原型作用域

double area(double radius);    //radius的作用域仅在于这,不能用于程序其他地方

2)局部作用域(块作用域)

a.函数的形参、块中声明的标识符;

b.作用域自声明处起,限与块中;

eg:局部作用域举例

局部作用域

3)类作用域

a.类的成员具有类作用域

其范围包括类体和成员函数体

b.在类的作用域以外访问类的成员:

    1、静态成员:通过类名,或者该类的对象名、对象引用访问。

    2、非静态成员:通过类名,或者该类的对象名、对象引用、对象指针访问。

4)文件作用域

a.不在前述各个作用域中出现的声明,具有文件作用域;

b.其作用域开始于声明点,结束于文件尾。

5)命名空间作用域

可见性:

1)可见性是从对标识符的引用的角度来谈的;

2)可见性表示从内层作用域向外层作用域”看“时能看见什么;

3)如果标识在某处可见,就可以在此次引用此标识符;

4)如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见;

5)对于两个嵌套的作用域,如果内层作用域内声明了与外层作用域同名的标识符,则外层的作用域的标识符在内层不可见。

可见性

eg:全局与局部

#include <iostream>

using namespace std;

int i; //全局变量,文件作用域

int main()

{

    i = 5;

{

    int i;    //局部变量,局部作用域 i = 7;

    cout << "i = " << i << endl;

}

    cout << "i = " << i << endl;

    return 0;

}

2、对象的生存期

1)静态生存期

a.生存期与程序的运行期相同;

b.在文件作用域中声明的对象具有静态生存期;

c.在函数内部声明静态生存期对象,关键字static。

2)动态生存期

a.开始于程序执行到声明点时,结束于命名该标识符的作用域结束处;

b.块作用域中声明的,没有用static修饰的对象是动态生存期的对象(局部生存期对象)

eg:静态和动态生存期例子

#include <iostream>

using namespace std;

int i;     //i是全局变量,静态生存期

void other()

{

    /* a,b为静态局部变量,具有全局寿命,局部可见,

    第一次调用other函数进行初始化 */

    static int a = 2;

    static int b;

    /* c为局部变量,具有动态生存期,

    每次调用函数时都初始化 */

    int c = 10;

    a += 2;

    i += 32;

    c += 5;

    cout << "---OTHER---\n";

    cout << " i: " << i << " a: " << a << " b: " << b << " c: " << c << endl;

    b = a;

}

int main()

{

    static int a;    //静态局部变量,全局寿命,局部可见

    int b = 10;

    int c = 0;     //b,c为局部变量,具有动态生存期

    cout << "---MAIN---\n";

    cout << " i: " << i << " a: " << a << " b: " << b << " c: " << c << endl;

    c += 8;

    other();

    cout << "---MAIN---\n";

    cout << " i: " << i << " a: " << a << " b: " << b << " c: " << c << endl;

    i += 10;

    other();

    return 0;

}

3、静态、动态数据成员

相关文章

  • 线程间共享数据

    本文主要介绍线程间共享数据的保护机制,主要内容是互斥量的介绍。 I、使用互斥量保护共享数据 1.1 lock 与 ...

  • 数据的共享与保护

    1、标识符的作用域与可见性 作用域的分类有: 1)函数原型作用域 double area(double radiu...

  • C++ 并发编程学习(八)

    使用互斥量保护共享数据   互斥量是 C++ 中一种最通用的数据保护机制,但它不是“银弹”;精心组织代码来保护正确...

  • C++线程间共享数据

    通常我们使用锁保护线程间共享数据,这也是最基本的方式。 当访问共享数据前,使用互斥量将相关数据锁住,再当访问结束后...

  • Linux文件权限和目录配置

    使用者和群组 用途 ---- 数据安全: · 系统保护、团队开发数据共享、规避数据被盗取盗用的风险 · lin...

  • 2018-07-20

    数据共享与保护 1.编译与连接的输入输出文件和作用 编译输入的是源文件(cpp),输出的是目标文件(obj),将文...

  • 数据共享

    容器与host共享数据 容器之间共享数据 volume container data-packed volume ...

  • 03 sharing data between threads

    C++ Concurrency in Action 2nd Edition note 3.2 用互斥量保护共享数据...

  • 互斥锁mutex/lock_guard/unique_lock

    互斥锁 互斥锁的应用场景,对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未...

  • 冷月手撕408之操作系统(21)-文件的共享与保护

    操作系统的文件的共享与保护主要是介绍了,共享和保护的几个基础概念,大家熟悉即可。 主要的重点冷月做出了标识,知识点...

网友评论

    本文标题:数据的共享与保护

    本文链接:https://www.haomeiwen.com/subject/ecwdpqtx.html