C++第三次作业:作用域
作用域的定义
作用域是一个标识符在程序正文中有效的区域。
1.函数原型作用域
在函数原型声明时形式参数的作用范围就是函数原型作用域。
它是C++程序中最小的作用域。
例:
double area(double radius);
其中radius的有效范围就在area形参列表的左右括号之间,在程序的其他地方不能引用这个标识符。
2.局部作用域
void fun(int a)
{
int b=a;
cin>>b;
if(b>0)
{
int c;
......
}
}
其中a的作用域为整段程序,b、c的作用域从声明处开始,到其所在的块结束。块就是一对发括号所括起来的一段程序。
函数体内声明的变量,其作用域从声明处开始,一直到声明所在的块结束的大括号为止。
具有局部作用域的变量也称局部变量。
3.类作用域
一个类就是一个独立的作用域,在类外定义函数或静态变量需要加上类名和作用域符号。每个类的成员不同于任何其他类的成员。
在类作用域之外,成员只能通过对象或指针分别使用成员访问操作符,或使用-> 来访问(此处这篇博客里不详述)。
例:
void Complex::get() {
......
}
一般的数据或函数成员必须通过对象来访问。
4.命名空间作用域
什么是命名空间呢?一个大型程序通常由不同模块构成,不同模块中的类和函数可能发生重名,这样就会引发错误。
命名空间就是为了消除这样的错误而存在。
(1)命名空间分类:
系统命名空间: std
自定义的命名空间:
如:
namespace NS
{
......
}
一个命名空间确定了一个命名空间作用域,凡是在该命名空间之内声明的,都属于该命名空间作用域。
命名空间也允许嵌套。
如:
namespcace OuterNS{
namespace InnerNS{
{
class SomeClass{...};
}
}
若想引用SomeClass类,需要使用如下形式:
OuterNS::InnerNS::SomeClass
此外还有两类特殊的命名空间
全局命名空间和匿名命名空间
全局命名空间是默认的命名空间,在显式声明的命名空间之外声明的标识符都在一个全局命名空间中。
匿名命名空间是一个需要显式声明的没有名字的命名空间,声明方式如下:
namespace {
匿名命名空间内的各种声明(函数声明、类声明......
}
(2)命名空间的使用
使用命名空间:
①通过作用域符 空间名::空间成员
②声明命名空间: using namespace 命名空间 ;
(3)实例
# include < iostream>
using namespace std;
int i; //在全局命名空间中的全局变量
namespace Ns{
int j; //在Ns命名空间中的全局变量
};
int main() {
i=5; //为全局变量i赋值
Ns::j=6; //为全局变量j赋值
{ //子块1
using namespace Ns;//使得在当前块中可以直接引用Ns命名空间的标识符
int i; //局部变量,局部作用域
i= 7;
cout<<”i="<<i<<endl;//输出7
cout<<”j="<<j<<endl;//输出6
}
cout<<”i="<<i<<endl;//输出5
return 0;
}
//运行结果:
//i=7
//j=6
//i=5
具有命名空间作用域的变量也称全局变量。
C++第三次作业:作用域的更多相关文章
- C++第三次作业--作用域
作用域 任何一种语言最基本的部分就是变量,而变量有两个非常重要的特性,作用域和生存期. 定义 作用域是变量的一个属性,某个变量在代码中有效的区域为该变量的作用域. 函数原型作用域 函数声明参数从参数声 ...
- OO第三单元作业——魔教规格
OO第三单元作业--魔教规格 JML的理论基础和相关工具 JML(Java Modeling Language,Java建模语言),在Java代码种增加了一些符号,这些符号用来标志一个方法是干什么 ...
- 耿丹CS16-2班第三次作业汇总
-- Deadline: 2016-10-12 22:48 -- 作业内容: 1.实验2-6 猜数字游戏 2.实验2-7 判断能否为三角形 3.实验2-8 个人所得税计算器 -- 第三次作业总结: 1 ...
- JAVA第三周作业(从键盘输入若干数求和)
JAVA第三周作业(从键盘输入若干数求和) 在新的一周,我学习了JAVA的IO编程.下面的代码实现了从键盘输入若干数求和的目标.import java.util.Scanner; public cla ...
- 第三次作业:caculator
第三次作业 作业链接 ********* 遇到的问题: Scan类: 队列的使用方法不了解,上网查询并自己练习了一下才初步了解,才运用到作业 . 判断数字用的 if (input[i] >= ' ...
- HTML第三天作业做的表格
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- 第三次作业——《K米评测》
第三次作业--<K米评测> 一.调研.评测 上手体验 APP的图标做的不错,一眼就知道和KTV唱歌相关的 点进去就是连接包箱的界面和直播界面,把软件最重要的两个功能展示出来了,一目了然 热 ...
- 软件工程(QLGY2015)第三次作业点评(含成绩)
相关博文目录: 第一次作业点评 第二次作业点评 第三次作业点评 团队信息 本页点评团队1-22,其他组见:http://www.cnblogs.com/xiaozhi_5638/p/4490764.h ...
- 第三次作业随笔(new)包含了补作业
第三次作业的题目:http://www.cnblogs.com/fzuoop/p/5187275.html 第一次看到题目的时候觉得应该是挺简单的,只要把输入的那一串东西挨个判断,用数列的方法,如果碰 ...
- 第三周作业、实时操作系统µC/OS介绍及其它内容
作业要求 见<实时控制软件设计>第三周作业 1 阅读笔记--µC/OS 1.1 基本介绍 µC/OS是由Micrium公司研发的实时操作系统,以µC/OS-II或µC/OS-III为内核, ...
随机推荐
- 树莓派搭建bt下载机、即是安装transmission
Transmission是一种BitTorrent客户端, 安装:sudo apt-get install transmission-daemon 给用户授权:sudo usermod -a -G p ...
- 模板引擎总结(Thymeleaf,FreeMarker,Enjoy,Velocity,JSP等)
在java领域,表现层技术主要有以下几种, (1)jsp; (2)freemarker; (3)velocity; (4)thymeleaf; (5)Enjoy; 1.JSP 优点: 1.功能强大,可 ...
- ASP.NET Core 入门笔记6,ASP.NET Core MVC 视图传值入门
摘抄自:https://www.cnblogs.com/ken-io/p/aspnet-core-tutorial-mvc-view-renderdata.html 如有侵权请告知 一.前言 1.本教 ...
- iscsi-分区类型
iSCSI简介(Internet SCSI): iSCSI 小型计算机系统接口,IBM公司研发,用于在IP网络上运行SCSI协议:解决了 SCSI需要直连存储设备的局限性:可以不停机扩展存储容量,iS ...
- Navicat Premium12 注册机下载及教程
1.下载Navicat Premium 官网https://www.navicat.com.cn/下载最新版本下载安装(文末,网盘地址有64位安装包和注册机下载) 2.激活Navicat Premiu ...
- day32 网络编程之粘包问题
1.最大半连接数 什么是最大半连接数 半连接:在进行TCP协议通信时,客户端与服务器端进行三次握手建立连接,但是有时客户端与服务器端进行了连接申请,服务器端也同意了申请(既已经完成三次握手的两次),此 ...
- Windows主机SAM文件格式破解解密
文件格式如是下图这种格式: 那么就可以通过通过kali终端samdump2 + system + sam 生成出来通过hashcat -m 1000去跑,或者通过md5查询
- 简单的GCC语法: 弄清gcc test.c 与 gcc -c test.c 的差别
转载于:http://cache.baiducontent.com/c?m=9d78d513d99610fe4fede5690d60c067690597634dc0d06368d5e31587231b ...
- ssm中静态文件加载路径
项目在本地软件和在服务器上的项目路径如果写死,有可能会出现项目在本机上可以访问,架设在服务器上后就不能访问 这儿介绍在ssm框架中使用 @WebServlet(urlPatterns = {},loa ...
- 【一个蒟蒻的挣扎】最小生成树—Kruskal算法
济南集训第五天的东西,这篇可能有点讲不明白提前抱歉(我把笔记忘到别的地方了 最小生成树 概念:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的 ...