C++第三次作业--作用域
作用域
任何一种语言最基本的部分就是变量,而变量有两个非常重要的特性,作用域和生存期。
定义
作用域是变量的一个属性,某个变量在代码中有效的区域为该变量的作用域。
函数原型作用域
函数声明参数从参数声明开始到函数声明结束。此作用域为c++程序中最小的作用域,生存周期最短。
例:int func(int i) i为参数,作用域类型为函数原型类型。
const int n=; int f(int n,int m = n); //error,n referrence to (int n) not (const int n)
函数作用域
函数的作用域相当于编译器划分给的函数的一段时间上与物理内存上的区域。在这段时间内,函数内定义的局部变量存在,过了这段时间,这个变量就不存在。同样,在这段内存中的变量是被该函数独享的,外部不能访问。
#include <iostream>
using namespace std; int main ()
{
// 局部变量声明
int a, b;
int c; // 实际初始化
a = ;
b = ;
c = a + b; cout << c; return ;
}
结果:30
命名空间作用域
在源程序中,其实,全局作用域也是一个命名空间,全局命名空间中变量的作用域从声明开始,到编译单元中断,在连接的时候,又将多个编译单元的全局命名空间连接在一起。
命名空间的变量的作用域:
从声明开始,到该命名空间结束中断,在新的一段同名命名空间开始继续开始。在使用using的地方,将该部分加入到作用域中。命名空间的子命名空间也包含其中。匿名命名空间和inline命名空间变量的作用域包含其父亲命名空间。
namespace A
{ //Scope of A begins
int a1=; //Scope of a1 begins
inline namespace B
{ //Scope of B begins
int a2; //Scope of a2 begins
}
namespace C
{ //Scope of C begins
int a3=; //scope of a3 begins
int f()
{
cout<<a1<<endl;
}
} //scope of a3 ends
namespace
{
int a4; //scope of a4 begins
} //int a2; //error: duplicate defination a2
} //scope of a1,a2,B,C,a4 interrupted
namespace A
{
//scope of a1,a2,B,C,a4 continue
}
类作用域
类中的数据和函数分为公有类(public),保护类(protected),私有类(private),
类公有派生类,保护派生类,私有派生类
类中的成员 在public中 ,可以在其他地方直接使用 使用方法:对象.公用类成员(对象::公用类成员)
而其他的需要借助公有类函数调用 ,但是在类中可以直接调用 。
class中的变量的作用域为:
- 从声明开始,到class结束
- 所有的类中成员函数的函数体中,不管是在声明之前,或者是在class之外
- 函数的默认参数中
- 所有嵌套在函数中的成员
例:
class X
{
int f(int a = n)
{ // X::n is in scope inside default parameter
return a*n; // X::n is in scope inside function body
}
int g();
int i = n*; // X::n is in scope inside initializer
// int x[n]; // Error: n is not in scope in class body
static const int n = ;
int x[n]; // OK: n is now in scope in class body
};
int X::g() { return n; } // X::n is in scope in out-of-class member function body
访问类中成员的方法有以下四种:
- 在class的作用域中,或子类的作用域中
- class或者子类的对象使用’.‘
- class或者子类对象的指针,使用'->'
- class 或者子类使用'::'
枚举作用域
枚举有两种类型: scoped enumeration and unscoped enumeration这两种类型的作用域是不同的。scoped enumeration: 作用域从变量声明开始,到enumeration结束为止。
unscoped enumeration: 作用域从变量声明开始,到enumeration结束,继续存在,直到全局作用域结束。
enum e1{
A,
B
};
enum class e2{
A2,
B2
};
e1 o1 = B;
//e2 o2 = B2; //error : B2 not in scope
e2 o2 = e2::B2;
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为内核, ...
随机推荐
- Dell 12V/18A电源适配器接口改造
手头有几个航模用的充电器,原来一直用实验室电源,不方便移动,为了便携省地方,就想配个合适的电源.在网上找了下,航模专用的适配器价格太高,国产的杂牌适配器功率虚标严重并且可靠性是个问题,工业用的电源基本 ...
- Kubernetes 相关镜像pull 不下来问题收集
1. 可在相关的镜像前添加 keveon 或者 mirrorgooglecontainers 就可以下载镜像, 然后在修改 tag docker pull mirrorgooglecontainers ...
- pandas - parse-date
1.pd.read_csv()函数中parse_dates()参数 boolean. True -> 解析索引 boolean. If True -> try parsing the in ...
- PHP7 下安装 memcache 和 memcached 扩展
转载自:https://www.jianshu.com/p/c06051207f6e Memcached 是高性能的分布式内存缓存服务器,而PHP memcache 和 memcached 都是 Me ...
- [转帖]prometheus数据采集exporter全家桶
prometheus数据采集exporter全家桶 Rainbowhhy1人评论2731人阅读2019-04-06 15:38:32 https://blog.51cto.com/13053917/2 ...
- gRPC 本地服务搭建
RPC RPC 原理 主流 RPC 框架 gRPC 概述 特点 服务端创建 定义服务 生成 gRPC 代码 服务端实现 客户端实现 踩坑记录 源码 RPC RPC 原理 RPC 框架的目标就是让远程服 ...
- curl put方式上传文件
发送端 <?php function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = 10) { $ch = ...
- javascript的一些有用函数记录,不断更新。。。
addLoadEvent函数: 众所周知,html文档加载完后会立即执行一个onload函数.但是onload函数只能包含一个被执行的函数,也就是你需要在加载完文档后执行的一个自己的函数.在实际中ht ...
- h5中的结构元素header、nav、article、aside、section、footer介绍
结构元素不具有任何样式,只是使页面元素的的语义更加明确. header元素 header元素是一种具有引导和导航作用的的结构元素,该元素可以包含所有通常放在页面头部的内容.header元素通常用来放置 ...
- drf-更新四大接口-单改整体-单改局部-群改整体-群改局部-04
目录 复习 基于前一天序列化基础 整体单改 单与整体局部修改 复习 """ 1.ModelSerializer序列化类 models.py class BaseModel ...