首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EasyC++51,名称空间

名称空间 C++当中,名称可以是变量、函数、结构体、枚举、类以及结构体和类成员。这本身并没有问题,但随着项目的增大,名称之间相互冲突可能性也会大大增加。...传统C++名称空间 我们先来复习一下几个术语。 声明区域 声明区域指的是可以在其中进行声明区域,比如我们可以函数外侧声明全局变量,对于全局变量,它声明区域就是其声明所在文件。...新名称空间特性 C++新增了通过定义一种声明区域来创建命名名称空间,这样做目的是提供一个声明名称区域。...fetch,而没有定义,我们也可以之后代码当中添加定义: namespace A { void fetch () { ... } } 当然而我们需要一种方法来访问给定名称空间里名称...,最简单方法是使用作用解析符::,使用名称空间名来找到该名称: A::pail = 12.34; A::fetch(); 没有作用解析符名称成为未限定名称,包含了名称空间名称称为限定名称。

27220

C++随记(八)---存储持续性、作用和链接性

C++中有两种存储持续性为自动变量:自动变量、寄存器变量。 ②静态存储持续性变量: 函数定义外变量和使用关键字static定义变量。它们程序整个运行过程中都存在。...这种内存存储持续性为动态,有时候被称为自由存储或者堆。 二、作用 作用描述了名称文件(翻译单元)多大范围内可见。 作用有多种: 作用为局部变量只定义它代码块中可用。...总结:不同C++存储方式是通过存储持续性、作用、链接性来描述。 ①自动存储持续性: 默认情况下,函数中声明函数参数和 变量 为 自动存储持续性, 作用为局部,无链接性。...因此,C\C++语言还定义了一种变量,不是保存在内存上,而是直接存储CPU中寄存器中,这种变量称为寄存器变量。...另外,如果将作用为整个文件变量加上static限定符,就不必担心其名称与其他文件中作用为整个文件变量发生冲突。

99600
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 温习笔记(1) - main函数,类对象,作用,防止头文件二次编译

+中作用详解 作用规则告诉我们一个变量有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用)。...局部变量经常被称为自动变量,因为它们进入作用时自动生成,离开作用时自动消失。关键字auto可以显式地说明这个问题,但是局部变量默认为auto,所以没有必要声明为auto。...(4) 静态变量 关键字static有一些独特意义。通常,函数中定义局部变量函数中作用结束时消失。当再次调用这个函数时,会重新创建变量存储空间,其值会被重新初始化。...这也就是所谓静态局部变量,具有局部作用,它只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在,它和全局变量区别在于全局变量对所有的函数都是可见,而静态局部变量只定义自己函数体内始终可见...此外同样存在静态全局变量,具有全局作用,它与全局变量区别在于如果程序包含多个文件的话,它作用于定义它文件里,不能作用到其它文件里,即被static关键字修饰过变量具有文件作用

1K10

staticC和C++用法和区别

)静态数据成员/成员函数 前两种C和C++都有,第三种仅在C++中有,下面分别作以下介绍: 一、局部静态变量 C/C++中, 局部变量按照存储形式可分为三种auto, static, register...注意此时, 对于外部(全局)变量, 不论是否有static限制, 它存储区域都是静态存储区,生存期都是全局. 此时static只是起作用限制作用, 限定作用本模块(文件)内部....在这里面, static既不是限定作用, 也不是扩展生存期作用, 而是指示变量/函数在此类中唯一性. 这也是”属于一个类而不是属于此类任何特定对象变量和函数”含义....但是在这里要注意是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变化,但是其作用没有改变,其仍然是一个局部变量,作用仅限于该语句块。    ...C++中extern还有另外一种作用,用于指示C或者C++函数调用规范。比如在C++中调用C库函数,就需要在C++程序中用extern “C”声明要引用函数。

2.6K10

开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)

大多老师都会让说:你们先记着这是固定,以后会懂(结果到了期末考完也什么都没说) namespace 是 C++关键字,用于创建命名空间,它是用来避免命名冲突并组织代码一种机制。...1.2.2命名空间使用 双冒号 :: C++ 中是作用解析运算符,它用于指定特定范围内命名空间或类成员。...类作用限定:用于指定类成员函数或静态成员变量。...定义或类外部,双冒号可以用于访问类静态成员 命名空间使用有三种方式: 加命名空间名称及作用限定符 namespace Test1 { // 命名空间中可以定义变量/函数/类型......4.函数重载 学过Java同学必然不陌生 4.1概念 函数重载:是函数一种特殊情况,C++允许同一作用域中声明几个功能类似的同名函数,这些同名函数形参列表==(参数个数或类型或类型顺序

14910

带领你打开C++神秘之门--入门篇

除此之外,往往一个大型项目是由多个人即一个团队组合完成,程序猿A和程序猿B可能会使用同一个名称去定义变量,这是难以预.C/C++中,变量、函数和C++中“类” 都是大量存在,它们名称将都存在于全局作用域中...使用命名空间目的是对标识符名称进行本地化(本地范围内保持不重名,在外面重名无所谓,只要加上作用限定符即可),以避免命名冲突或名字污染,namespace关键字出现就是针对这种问题....C中如果不能屏蔽这个局部变量,还想优先访问全局域10似乎很难办到, 而C++中,引入了作用限定符,2处a前面有" :: "作用限定符,虽然是 空格+:: ,这里空格就代表全局域,所以这里打印...命名空间好似一堵墙,他将变量,函数等对象围了起来,防止与别处污染,要想使用其中变量,函数等内容有三种方法. 1.使用作用限定符号: 命名空间名字::+变量名 2.展开命名空间(将墙拆掉...): using namespace +命名空间名字 3,展开命名空间部分 using std::cout; 栗子1:使用作用限定符(指定空间访问): //不推荐 #include

17020

C++ 作用使用规范建议

1.名字空间(Namespace) C++ C 基础上引入了名字空间机制,使C中作用级别从原有的文件(全局作用)、函数作用和代码块作用(局部)增加了名字空间和类。...名字空间是ANSI C++引入可以由用户命名作用,用来处理程序中常见同名冲突。...如果你确实需要定义非成员函数,又只是.cpp文件中使用它,可使用匿名名字空间或static(如static int Foo() {…})限定作用。...3.局部变量(Local Variable) (1)将局部变量尽可能置于最小作用内,定义时将其显示初始化 C++允许函数任何位置声明和定义变量,我们提倡尽可能小作用域中定义变量,离第一次使用位置越近越好...记住,静态成员变量视为作用限制全局变量,所以,也不能是class类型!

1K20

C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)

命名空间定义 当有两个同名变量时,会优先在找局部,如果找不到,再找全局。如果我们想打印1,就可以加上 ‘::’ 前面不加情况下,默认是空,也就是全局域,该符号叫作用限定符。...编译器搜索原则: 当前局部 全局域 如果指定了,直接去指定搜索 命名空间中,还可以定义函数,结构等。使用结构时,注意命名空间名称和作用限定符加在struct后面。...注意:同一个工程中允许存在多个相同名称命名空间,编译器最后会合成同一个命名空间中。 命名空间使用 当我们想打印时,如果没有打开std这个空间,我们就无法用C++方式打印。...如果此时想打印,就必须按下图方式: 第一种:加命名空间名称及作用限定符 但是要一直加上命名空间名称和作用符很麻烦,这时我们可以打开权限,使用using namespace 命名空间名称...:是函数一种特殊情况,C++允许同一作用域中声明几个功能类似的同名函数,这 些同名函数形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型 不同问题。

11910

C++ 变量和复合类型

对于未初始化局部变量进行操作可能导致无法预料后果。对于全局变量,如果没有给定初始值,默认值是0。 定义和声明变量 变量定义告诉编译器,我要创建一个变量,以后再用它。...和大多数编程语言一样,C++标识符需要以字母或下划线开头,有数组、字母和下划线组成,而且对大小写敏感。 作用 如果一个标识符定义花括号外面,那么这个标识符作用就是全局作用。...全局作用变量可以本文件任何地方访问,如果在其他文件中声明这个标识符,那么还可以在其他文件中访问。 如果一个标识符某对花括号中定义,那么这个标识符作用就在这对花括号中,这就是局部作用。...局部作用标识符超出这个块后,就无法被访问了。如果有一个全局变量,然后某个作用域中又定义了一个同名变量,那么这个局部变量就会屏蔽对全局变量访问。...C++ 11标准中引入了一个新字面量nullptr来代替NULL,所以以后程序中,我们最好使用nullptr。 引用 引用是C++语言新增一种类型,它和指针既有相似之处,也有不同之处。

1.1K100

Google C++编程风格指南(三)之作用相关规范

1.名字空间(Namespaces) C++C基础上引入了名字空间机制,使C中作用级别从原有的文件(全局作用)和局部(函数作用和代码块作用)中间增加了名字空间和类。...如果你确实需要定义非成员函数,又只是.cpp文件中使用它,可使用不具名名字空间或static关联(如static int Foo() {…})限定作用。...---- 3.局部变量(Local Variables) (1)将局部变量尽可能置于最小作用内,定义时将其显示初始化 C++允许函数任何位置声明和定义变量。...大多数全局变量应该是类静态数据成员,或者当其只.cpp文件中使用时,将其定义到不具名名字空间中,或者使用静态关联以限制变量作用。...记住,静态成员变量视为作用限制全局变量,所以,也不能是class类型!

1.2K30

CC++面试题之语言基础篇(一)

C和C++都有结构概念,但是C语言中结构只有成员变量没有成员方法,而在C++结构中,它可以有自己成员变量以及成员方法。...C语言中结构成员是默认是公共,而在C++没有限定符则默认是私有的 C++中有bool类型,而C语言可没有bool类型 定义常量C语言使用#define,而C++使用const C中,强制类型转换通常例如...对于C++:全局或静态对象对象首次用到时才进行构造。 静态局部变量,全局变量,局部变量特点 首先从作用考虑: 全局变量:全局作用,可以通过extern作用于其他非定义源文件。...静态全局变量 :全局作用+文件作用,所以无法在其他文件中使用。 局部变量:局部作用,比如函数参数,函数内局部变量等等。 静态局部变量 :局部作用,只被初始化一次,直到程序结束。...生命周期: 局部变量栈上,出了作用就回收内存;而全局变量、静态全局变量、静态局部变量都在静态存储区,直到程序结束才会回收内存。

19810

C++类和对象】类和对象引入

面向对象编程是以对象为基础编程方式,它将问题抽象为一组对象,并通过定义对象属性和方法来描述对象特征和行为。面向对象强调对象之间交互和消息传递,通过定义类和创建对象来实现程序功能。...【访问限定符说明】 public修饰成员类外可以直接被访问 protected和private修饰成员类外不能直接被访问(此处protected和private是类似的) 访问权限作用从该访问限定符出现位置开始直到下一个访问限定符出现时为止...如果后面没有访问限定符,作用就到 } 即类结束。...5.类作用 类定义了一个新作用,类所有成员都在类作用域中。类体外定义成员时,需要使用 :: 作用操作符指明成员属于哪个类。...: Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象区分,那当d1调用 Init 函数时,该函数是如何知道应该设置d1对象,而不是设置d2对象呢?

13010

C++打怪升级(一)- 命名空间、缺省形参、重载

这与作用有关系: 对于C语言同一作用域中不能定义同名多个变量。 ---- C++解决之道 我们虽然不会故意去写上面的那种代码,但是与他人协作中出现变量同名现象却也是可能发生。...编译器查找标识符规则: 默认情况:先在标识符所在作用向上查找,找不到再去全局作用向上查找,都找不到就报错; 指定(特定)查找:需要使用作用限定符::,直接去指定作用去查找标识符,找不到直接报错...作用限定符:: scope::tag 两个操作数:左操作数是指定一个,右操作数是一个标识符(变量、函数名等) 使用作用限定符访问命名空间中成员**:** #include <iostream...前面已经介绍了使用作用限定符访问命名空间中成员方法,接下来我们来看看另外两种访问命名空间成员方法吧!...函数重载是什么 函数重载是函数一种特殊情况,C++允许同一作用域中声明几个功能类似的同名函数,这 些同名函数形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型

82720

c++入门】命名空间,缺省参数与函数重载

命名空间使用 方法一:加命名空间名称及作用限定符 首先我们来介绍一个符号::,由两个冒号组成一个符号叫做作用限定符, 注意,下面代码均在.cpp后缀文件实现 例如代码: #include<stdio.h...a封起来放在全局变量中 编译器使用变量时,会进行搜索,首先会搜索局部,再搜索全局域,我们想访问命名空间里面的变量,就需要加命名空间名称及作用限定符 这种特性C++中非常有用,尤其是当局部变量名称可能会与全局变量或者在其他命名空间中变量重名时...::b; int main() { printf("%d\n",N1::a); printf("%d\n",b); return 0; } 这里,N1命名空间包含了两个全局变量a和b,它们作用被限制了...这意味着它们不能被直接访问,除非使用其命名空间名作前缀 接下来,通过using声明导入了N1命名空间中b变量: using N1::b; 这个声明使得using声明所在作用(在这个例子中,是全局作用...,这个地址修正过程也叫做重定位 接下来我们所讲解函数重载与上述内容也有所关联 6.函数重载 函数重载是C++语言一个特性,它允许同一作用内声明几个具有相同名字函数,只要这些函数参数列表不同

8910

C++中变量声明与定义规则

static 当我们C/C++用static修饰变量或函数时,主要有三种用途: 局部静态变量 外部静态变量/函数 类内静态数据成员/成员函数 其中第三种只有C++中有,我们后续面向对象程序设计中再探讨...只不过加上static后限制这个全局变量作用只能在定义该变量源文件内。...这两者存储方式上并无不同,这两者区别在于非静态全局变量作用是整个源程序。...当一个源程序由多个源程序组成时,非静态全局变量各个源文件中都是有效,而静态全局变量则限制了其作用,即只定义该变量源文件内有效,同一源程序其他源文件中不能使用它。...总结 static这个说明符不同地方所起作用是不同,比如把局部变量改变为静态变量后是改变了它存储方式即改变了它生存期,把全局变量改变为静态变量后是改变了它作用,限制了它使用范围。

2.3K10

嵌入式 C 语言(上)

目录 基础知识 数据类型 const 用法 作用与 static 用法 extern 用法 基础知识 嵌入式C语言和普通C语言语法上几乎没有差别,其主要差别在于普通C语言运行环境是OS之上,有很多标准库函数支撑调用...修饰指针 C语言中const修饰指针需要特别注意,共有两种形式,一种是用来限定指向空间值不可修改;另一种限定指针不可修改,例如: int i = 5; int k = 10; int const...修饰函数参数 C语言中const修饰函数参数对参数起限定作用,防止其函数内部被意外修改,所限定参数可以是 普通变量也可以是指针变量,如: void fun(const int x) { ......(*p)++; // 对 p 指向空间值进行了修改,错误 } 作用与 static 用法 了解static关键字用法之前,我们需要先了解C语言中作用、局部变量和全局变量概念。...一个C变量作用可以是块作用、函数作用、函数原型作用或文件作用。 块是用一对花括号“{}”括起来代码区域,定义块中变量具有块作用。块作用可见范围是从定义处到包含该定义末尾。

1.3K30

从唯一实例谈静态成员

c++没有提供这一特性,我们可以自己封装一个唯一实例类,为了完成这个工作,我们需要一个静态整型数据成员用于记录当前程序中类实例个数,还需要一个指向自身静态指针,指向新创建对象。...,而堆栈段用来存储函数中定义局部变量,也就是说静态变量和全局变量同一段内存空间中,也可以相当于一个全局变量,关键字static除了定义静态变量时候使用外,还可以作为限定符,限定定义变量只能在某一区内可见...所以说静态变量是一种限定了可见区域全局变量类中定义静态数据变量被限定类中可见,与类普通成员间最大区别在于普通成员只有类存在时才会在内存中真正存在,而静态成员一旦定义就已经存在,且整个内存中只有一份...因为它们有类生命周期无关,所以不论类是否创建了对象,都可以使用它们,只是需要加上类,因为static已经限定了它们只类中可见。...不能用构造函数创建对象,也就是说我们需要利用其它方法创建对象,既然没有构造函数,那么通过对象打点调用其它函数创建肯定也是不可能,我们需要一种函数即使类对象没有它们也存在,静态函数成员正是这种函数,所以我们需要创建静态函数成员

59710

前端成神之路-JavaScript基础第05天笔记

JavaScript基础第05天笔记 1 - 作用 1.1 作用概述 通常来说,一段程序代码中所用到名字并不总是有效和可用,而限定这个名字可用性代码范围就是这个名字作用。...1.4 JS没有块级作用 2 - 变量作用 JavaScript中,根据作用不同,变量可以分为两种: 全局变量 局部变量 2.1 全局变量 全局作用下声明变量叫做全局变量函数外部定义变量...全局变量代码任何位置都可以使用 全局作用下 var 声明变量 是全局变量 特殊情况下,函数内不使用 var 声明变量也是全局变量(不建议使用) 2.2 局部变量 局部作用下声明变量叫做局部变量...(函数内部定义变量) 局部变量只能在该函数内部使用 函数内部 var 声明变量是局部变量 函数形参实际上就是局部变量 2.3 全局变量和局部变量区别 全局变量:在任何一个地方都可以使用,只有浏览器关闭时才会被销毁...属性:事物特征,在对象中用属性来表示(常用名词) 方法:事物行为,在对象中用方法来表示(常用动词) ? 5.2 创建对象三种方式

32210

C++干货基地】namespace超越C语言独特魅力(文末送书)

一、C++发展历史 C++又叫Cplusplus 其实就是C语言升级版啦,是,Bjarne Stroustrup博士 1982年C语言基础上引入并扩充了面向对象概念,发明了一种程序语言...所以为了解决这个问题C++ 中就有了命名空间概念,这也是我们要学第一个关键字 namespace 2.1 命名空间创建 以往我们定义全局变量时候如果和库函数语言了就会导致出现命名冲突情况 #...而我们想要使用命名空间就需要 作用限定符 :: 这个东西了,他可以让我们访问到命名空间内容 作用限定符 左边事命名空间名 :: 右边是要访问内容 代码演示: #define _CRT_SECURE_NO_WARNINGS...前面说可能很多老铁不太明白,其实一共有这几种 局部 全局域 命名空间作用限定 概念就是 从指定里面去访问,平常我们访问一个变量是优先 局部作用去寻找,然后再去全局范围进行寻找...命名空间展开 虽然命名空间很好用但是有很多人说,这每次使用起来也太麻烦了吧,每一个函数都要加 作用限定符 。

3800
领券