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

C++变量存储说明符和cv-限定符

C++创建变量时,前面有时会有一些修饰符,这里总结一下。 大体分为两个类别:存储说明符和cv-限定符。...register修饰变量将创建一个寄存器变量,理念在于CPU访问寄存器值比访问普通存储在堆栈值速度要快,声明方法: register int count_fast; 需要注意是,编译器并不一定会满足将变量放在寄存器要求...(有可能已被占用等等),而且寄存器无内存地址,所以寄存器变量不能用地址操作符。...// 但这又是允许,因为结构体person成员age用mutable修饰了 cv-限定符 cv限定符只有两种: const volatile 这也是为什么它叫cv限定符,取首字母嘛。...因为假设编译器发现程序在几条语句中都使用了某个变量,那么为了优化,它不会让程序去查多次,而是缓存到寄存器

59110

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

C++中有,我们后续在面向对象程序设计再探讨,这里只讨论静态局部/全局变量。...静态全局变量C++废弃,用匿名命名空间替代) Tips:对于全局变量,不管是否被static修饰,它存储区域都是在静态存储区,生存期为整个源程序。...当一个源程序由多个源程序组成时,非静态全局变量在各个源文件中都是有效,而静态全局变量则限制了其作用域,即只在定义该变量源文件内有效,在同一源程序其他源文件不能使用它。...C++98auto用法(C++11已废弃) C++98 auto用于声明变量为自动变量(拥有自动生命周期),C++11已经删除了该用法,取而代之是“变量自动类型推断方法”。...2. constexpr是对指针限制 在constexpr声明定义了一个指针,限定符constexpr仅对指针有效,与指针所指对象无关: const int *pi1 = nullptr;

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

C++】类与对象【定义、访问限定符、this指针】

C++是基于面向对象,关注是对象,将一件事情拆分成不同对象,靠对象之间交互完 成。 类引入 C语言结构体只能定义变量,在C++,结构体内不仅可以定义变量,也可以定义函数。...在C++更喜欢用class来代替。 类定义 class为定义类关键字,ClassName为类名字,{}为类主体,注意类定义结束时后面分号不能省略。...类体内容称为类成员:类变量称为类属性或成员变量; 类函数称为类方法或者成员函数。...类对象模型 类对象存储方式 对象只保存成员变量,成员函数存放在公共代码段 计算类对象大小 类既可以有成员变量,又可以有成员函数。如何计算一个类大小?...C++过引入this指针解决该问题,C++编译器给每个“非静态成员函数“增加了一个隐藏 指针参数,让该指针指向当前对象(函数运行时调用该函数对象),在函数体中所有“成员变量操作,都是通过该指针去访问

13110

C++const成员变量和成员函数

在类,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。...const成员变量 const 成员变量用法和普通 const 变量用法相似,只需要在声明时加上 const 关键字。...初始化 const 成员变量只有一种方法,就是通过构造函数初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。...const成员函数(常成员函数) const 成员函数可以使用类所有成员变量,但是不能修改它们值,这种措施主要还是为了保护数据而设置。const 成员函数也称为常成员函数。...读取成员变量函数名字通常以get开头,后跟成员变量名字,所以通常将它们称为 get 函数。

21430

C++变量自动初始化问题

C++中有一些变量在如果没有赋初值会被编译器自动赋值为0,但有的变量又不会这样,而得到一个随机数,下面具体讨论一下: 首先看一下C++几个存储区: 1、栈区:由编译器自动分配释放 ,存放函数参数值...其操作方式类似于数据结构栈。     2、堆区:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构堆是两回事,分配方式倒是类似于链表,呵呵。    ...3、全局区(静态区)(static):全局变量和静态变量存储是放在一块,初始化全局变量和静态变量在一块区域, 未初始化全局变量和未初始化静态变量在相邻另一块区域。...结论:一些全局变量(不管用没用static修饰)或者是使用static修饰局部变量在定义时候都会被编译器自动初始化为0,而在声明时候任何变量都不会被编译器自动初始化。...如static int num;如果放在函数任何位置都会被隐式初始化为0,但是如果是在类声明这样写就不会有值。

1.4K70

C++变量引用 | 使用变量引用

C++变量引用 C++可以对一个数据可以使用引用,引用是C++对C语言一个重要扩充,引用是一种新变量类型, 它作用是为一个变量起一个别名。...声明变量change为引用类型,并不需要另外开辟内存单元来存放change值。change和temp占内存同一个存储单元,它们具有同一地址。...在C++,声明一个引用类型变量时,必须同时使之初始化,即声明它代表哪一个变量,在声明变量change是变量temp引用后,在它们所在函数执行期间,该引用类型变量change始终与其代表变量temp...经典案例:C++使用变量引用。...-- Process exited after 3.501 seconds with return value 0 请按任意键继续. . . 8.8 C++变量引用 | 使用变量引用 更多案例可以go

2.3K2219

C++】继承 ⑨ ( 继承成员变量同名处理方案 )

一、继承成员变量同名处理方案 1、继承成员变量同名场景说明 子类 继承 父类 成员 , 如果 子类 定义了 与 父类成员变量 同名 变量 , 子类 仍然 可以 继承 父类 同名 成员变量...: 继承自父类成员变量 , 使用 父类名称::成员变量名称 替代 成员变量名称 , 如 : Parent 是父类名称 variable 是父类变量名称 如果子类也定义了 variable...变量 , 子类中使用该方式 访问 父类 variable 变量 ; // Parent 是父类名称 // variable 是父类变量名称 // 如果子类也定义了 variable 变量 ,...子类中使用该方式 访问 父类 variable 变量 ; Parent::variable 子类成员变量名称 , 可以使用 Child::variable 方式进行访问 , 也就是可以不使用域作用符...方式 , 访问 继承自父类 成员变量 ; Child child; // 访问 子类对象 child 继承自 父类 b 成员 child.Parent::b = 10; 完整代码示例

28020

C++】static 变量详解-变量

static修饰变量的话,有两点要注意。 1.变量存储区域在全局区,不管变量是在函数体内,class内,还是cpp文件内。 2.变量作用域在离它最近{}内部,出了{}之外,不可以使用。...为了比较区别,在这里变量名都是a,发现都可以编译通过。这也就表明G++做了处理,可以区分出来不同作用域里面的变量。 为了进一步知道原因,我编译出来了汇编,命令G++ -S *.cpp。...从上到下,我们可以看到,不同函数内变量static int a; 会在变量前加上对应函数名,例如: 1.main函数里面的,变成了_ZZ4mainE1a; 2.Fun函数内,变成了_ZZ4FunvE1a...; 3.全局变量,变成了_ZE1a;(这里没有粘贴出来,后续补上。)...经过编译器处理之后,这些源代码相同名字变量,在编译之后便变成了唯一标识符,这也就说明了static作用域意义了。 ----

64110

C++基础变量

变量 变量基本形式是:首先是类型说明符,随后紧跟有一个或者多个变量名组成列表,其中含有多个变量名时用逗号隔开,最后以分号结束。...string &rName = "test1";// 错误 一般在初始化时候,初始化值会被拷贝到新建对象,引用对象和被引用对象初始化在一起,而不是拷贝一个新初始化给引用,也就是引用是和被引用对象共用一块内存地址...限定符 我们有时候希望我们定义变量值不能被修改,为了满足这个需求,我们可以使用关键字const对变量类型进行限制 const int buffSize = 1024; buffSize...默认情况下,const变量被设定为仅在文件内有效,当多个文件中出现同名const变量时候,其实会在不同文件中分别定义独立const变量。...如果需要实现文件共享,这种情况我们不希望编译器为每个文件都生成独立变量,即在一个文件声明其他文件都可以使用。

36410

C++变量总结束 | 输出各种变量

静态存储 静态局部变量 静态外部变量 外部变量变量值存放位置来区分,可分为  内存静态存储区  静态局部变量 静态外部变量 外部变量 内存动态存储区,自动变量和形式参数 。...CPU 寄存器,寄存器变量。...对函数声明是可以放在声明部分,而函数定义显然不在函数声明部分范围内,它是一个文件 独立模块。 对变量而言,声明与定义关系稍微复杂一些。...在声明部分出现变量有两种情况:一种是需要建立存储空间;另一种是不需要建立存储空间。 经典案例:C++输出各种变量。...C++输出各种变量值 更多案例可以go公众号:C语言入门到精通

2K2828

C++ 变量类型

C++ 变量类型 变量其实只不过是程序可操作存储区名称。C++ 每个变量都有指定类型,类型决定了变量存储大小和布局,该范围内值都可以存储在内存,运算符可应用于变量上。...下面我们将讲解如何定义、声明和使用各种类型变量C++ 变量定义 变量定义就是告诉编译器在何处创建变量存储,以及如何创建变量存储。...C++ 变量声明 变量声明向编译器保证变量以给定类型和名称存在,这样编译器在不需要知道变量完整细节情况下也能继续进一步编译。...您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。...+ 左值(Lvalues)和右值(Rvalues) C++ 中有两种类型表达式: 左值(lvalue):指向内存位置表达式被称为左值(lvalue)表达式。

24520

C++ 变量类型

变量其实只不过是程序可操作存储区名称。C++ 每个变量都有指定类型,类型决定了变量存储大小和布局,该范围内值都可以存储在内存,运算符可应用于变量上。...下面我们将讲解如何定义、声明和使用各种类型变量C++ 变量定义变量定义就是告诉编译器在何处创建变量存储,以及如何创建变量存储。...C++ 变量声明变量声明向编译器保证变量以给定类型和名称存在,这样编译器在不需要知道变量完整细节情况下也能继续进一步编译。变量声明只在编译时有它意义,在程序连接时编译器需要实际变量声明。...虽然您可以在 C++ 程序多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。...左值(Lvalues)和右值(Rvalues)C++ 中有两种类型表达式:**左值(lvalue):**指向内存位置表达式被称为左值(lvalue)表达式。

30510

c++临时变量

C++临时变量 “有时候,在求表达式期间,编译器必须创建临时变量(temporary object)。像其它任何对象一样,它们需要存储空间,并且必须能够构造和销毁。...需要注意是,编译器创建这个临时变量为常量.” – Thinking in C++ 什么情况下编译器会创建临时变量 看下面代码: class A{ public: print(){ cout...A(); return a; } int main(){ A a = generateA(); generateA(); } 在A a = generateA()时,编译器不会创建临时变量...,因为在generateA()返回之前,就已经把函数里面的a对象拷贝给了main函数a对象。...generateA()这句会使编译器创建一个临时对象,因为generateA()是有返回值,但是在main函数并没有对象来收留它,所以编译器会创建一个临时对象来收留它,为可能后续操作做准备。

73060

C++定义指针变量 | 使用指针变量

C++指针变量定义 C++规定所有变量在使用前必须先定义,即指定其类型,在编译时按变量类型分配存储空间,对指针 变量必须将它定义为指针类型。...即*不是指针变量一部分,在定义变量时在变量名前加一个*表示该变量是指针变量。 在C++怎样使一个指针变量指向另一个变量呢?...只需要把被指向变量地址赋给指针变量即可: point_num1=&i; 在C++,一般编译系统为每一个指针变量分配4个字节存储单元,用来存放变量地址, 在定义指针变量时要注意:  不能用一个整数给一个指针变量赋初值...在定义指针变量时必须指定基类型。 经典案例:C++定义指针变量。...C++定义指针变量 | 使用指针变量 更多案例可以go公众号:C语言入门到精通

2.6K2420

C++临时变量常量性

1.认识临时变量常量性 关于临时变量常量性,先看一段代码。...出错原因是编译器根据字符串"hello world"构造一个string类型临时对象,这个临时变量具有const属性,当这个临时变量传递给非conststring&引用类型时,无法隐式完成const...注意,这里与《C++编程思想》在第八章“临时量”小节认为“编译器使所有的临时量自动设为const”说法有些不同。 那编译器为何作出如此限制呢?...但如果把一个临时变量当作非const引用参数传进来,由于临时变量特殊性,临时变量所在表达式执行结束后,临时变量就会被释放,所以,一般说来, 修改一个临时变量是毫无意义,据此,C++编译器加入了临时变量不能作为非...---- 参考文献 [1]c++临时变量不能作为非const引用参数 [2]C++编程思想[M].刘宗田译.8.3.2.1临时量

1.9K31

C++结构体变量引用 | 结构体变量引用

C++结构体变量初始化 C++对结构体变量可以在定义时指定初始值。...'M',24}; C++结构体变量引用 C++在定义了结构体变量以后,可以引用这个变量。...可以将一个结构体变量值赋给另一个具有相 同结构结构体变量。 student1= student2; 可以引用一个结构体变量一个成员值。 ...student1.num//表示结构体变量student1 student1 student1 成员值 引用结构体变量成员一般方式为  结构体变量名....例如:已定义student1和student2为结构体变量,并且它们已有值,不能这样输出结构体变量各成员值: cout<<student1; //错误 只能对结构体变量各个成员分别进行输入和输出

3.4K88
领券