C++——数据共享与保护

本文详细探讨了C++中标识符的作用域与可见性,包括函数原型作用域、局部作用域、类作用域、文件作用域和命名空间作用域。接着讨论了对象的生存期,如静态生存期和动态生存期。此外,还介绍了类的友元机制,包括友元函数和友元类,以及它们在数据访问上的影响。最后,重点阐述了如何通过常对象、常成员(常数据成员和常成员函数)、常引用、常数组和常指针来保护共享数据,确保数据的安全性。
摘要由CSDN通过智能技术生成

目录

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

1.1作用域

分类

1.2可见性

二、对象的生存期

2.1静态生存期

2.2动态生存期

三、类的友元

3.1友元函数

3.2友元类

四、共享数据的保护

4.1常对象

4.2常成员

4.2.1常数据成员

4.2.2常成员函数

4.3常引用

4.4常数组

4.5常指针


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

1.1作用域

作用域是一个标识符在程序正文中有效的区域

分类

1、函数原形作用域

函数原型中的参数,其作用域始于 " ( ",止于" ) ",限与小括号内

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

函数的形参、在块中声明的标识符的作用域;自声明处起,限于块中

void fun(int a) {    //a的范围在整个函数
	int b = a;    //b的范围仅限fun函数体
	cin >> b;
	if (b > 0) {
		int c;    //c的范围仅限if语句
		......
	}
}

3、类作用域

类的成员具有类作用域,其范围包括类体和非内联成员函数的函数体

如果在类作用域以外访问类的成员,要通过类名(访问静态成员),或者该类的对象名、对象引用、对象指针(访问非静态成员)

4、文件作用域

不在前述各个作用域中出现的声明的标识符,就具有文件作用域,始于声明处,止于文件尾

5、命名空间作用域

 

1.2可见性

可见性是从对标识符的引用的角度来谈的概念,表示从内层作用域向外层作用域“看”时能看见什么

  1. 如果标识在某处可见,就可以在该处引用此标识符
  2. 如果某个标识符在外层中声明,且在内层中没有同一标识符的声明,则该标识符在内层可见
  3. 对于两个嵌套的作用域,如果在内层作用域内声明了与外层作用域中同名的标识符,则外层作用域的标识符在内层不可见(被屏蔽)
#include<iostream>
using namespace std;

int i;	//全局变量,文件作用域
int main() {
	i = 5;	//为全局变量i赋值
	{
		int i;	//局部变量,局部作用域
		i = 7;
		cout << "i = " << i << endl;	//输出7
	}
	cout << "i = " << i << endl;	//输出5
	return 0;
}

结果:
i = 7
i = 5 

 

 

二、对象的生存期

2.1静态生存期

与程序的运行期相同

在文件作用域中声明的对象具有这种生存期

在函数内部声明静态生存期对象,要冠以关键字static

 

2.2动态生存期

始于声明处,止于命名该标识符的作用域结束处

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值