static、const、static const分析
const与static的含义:
const定义的常量在超出其作用域之后其空间会被释放。
而static定义的静态常量在函数执行后不会释放其存储空间。
static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。
static成员变量、const成员变量、static const 成员变量:**
初始化:
static成员变量不能在类的内部初始化,在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化。例如:double Account::Rate = 2.25;static关键字只能用于类定义体内部的声明中,定义时不能标示为static。
const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。
static const成员变量只能在类外就行初始化,static const interesting类型的成员变量例外。
补充:
const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。
const数据成员的初始化只能在类的构造函数的初始化列表中进行。要想建立在整个类中都恒定的常量,应该用类中的枚举常量来实现,或者static const。
class Test
{public:Test():a(0){}private:enum {size1 = 100, size2 = 200 };const int a; // 只能在构造函数初始化列表中初始化static int b; // 在类的实现文件中定义并初始化const static int c; // 与static const int c相同
};int Test::b = 0; // static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。(最好放到cpp文件中)
const int Test::c = 0; // 给静态成员变量赋值时,不需要加static修饰符,但要加const。(最好放到cpp文件中)
const成员函数与static成员函数:
const成员函数主要目的是防止成员函数修改对象的内容。即const成员函数不能修改成员变量的值,但可以访问成员变量。当方法成员函数时,该函数只能是const成员函数。
static成员函数主要目的是作为类作用域的全局函数。不能访问类的非静态数据成员。类的静态成员函数没有this指针,
这导致:1、不能直接存取类的非静态成员变量,调用非静态成员函数; 2、不能被声明为virtual。
static、const、static const分析相关推荐
- C语言易混淆关键词详解-const, static, extern, typedef, 声明
Const Const关键词并不能把一个变量变成一个常量, 在符号前加上const表示这个符号不能被赋值, 即他的值对这个符号来说是只读的, 但并不代表这个值不能用其他方法去改变. 通过下面的例子就能 ...
- const static 数组指针
const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化************************* cons的作用 ...
- c++ const static
const作用: 1.定义常量,可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. const int Max = 100; void f(const int i) { i=10;//error ...
- 03 - const static extern
const是一个C语言的关键字,它限定一个变量不允许被改变.使用const可以在一定程度上提高程序的安全性和可靠性,再者在看别人的代码作品的时候也可以有助于清晰理解const所起的作用. 1.cons ...
- dim private public static_PHP中const,static,public,private,protected的区别
const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问: private: 表示私有的,只有本类内部可以使用: protec ...
- C# static readonly 与 const 的区别
static readonly 与 const 的区别: const 表达式的值是在编译时形成的: static readonly 表达式的值直到程序运行时才形成: 转载于:https://www.c ...
- const,static,extern 简介
const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...
- QWT错误static struct QMetaObject const QwtPlot
使用QWT例子oscilloscope出现如下错误: error LNK2001: unresolved external symbol "public: static struct QMe ...
- static, const, static const 与 const static
1. static const/ const static, 意义一样 namespace NdpiTransformersTest{class TestMain{public: ~TestMain( ...
- 【C语言进阶深度学习记录】九 C语言中const的详细分析
文章目录 1 const的分析 2 const本质的分析实验 2.1 代码案例分析 3 const修饰函数参数和返回值时的情况 3.1 代码案例分析 4 总结 1 const的分析 不管是C语言还是C ...
最新文章
- WPF入门教程系列九——布局之DockPanel与ViewBox(四)
- 阅读Book: MultiObjective using Evolutionary Algorithms (4) --- 3 种方法find Non-dominated set
- linux2.6内核链表
- Snmp扫描-snmpwalk、snmpcheck
- VTK:PolyData之RemoveVertices
- 【Boost】boost库asio详解7——boost::asio::buffer用法
- 作业调度进程c语言代码,进程调度 时间片轮转调度算法源代码(C语言)
- sizeof和strlen区别
- 龙卷风路径_关于龙卷风,看这篇文章就够了
- 【Android TV 开发】-->一些优秀 TV 开发相关框架 文章
- 表单项 —【input的required属性】
- OpenCV中八种不同的目标追踪算法
- annotations are not allowed here
- 已解决:`anonymous-namespace‘::SourceReaderCB::~SourceReaderCB terminating async callback
- 第10章 基础API与常见算法
- java读取本地图片在浏览器中显示
- 百度搜索引擎结果网址参数 相关提示位置(rsp)
- 泰斗破环神学习笔记——主界面开发
- 百度搜索高级语法技巧大全
- 如何使用 U 盘制作系统安装盘,安装 Windows 10 系统
热门文章
- “读心术”再升级,数字识别准确率可达90%
- 程序员需要掌握哪些软技能?
- TCP/UDP协议简要梳理
- Openstack api 学习文档 restclient使用文档
- Ubuntu下的QQ
- 37. Element appendChild() 方法
- 10. 单例模式(singleton pattern)
- oracle错误输出,oracle – SQL小提琴输出错误
- vue路由传多个参数_vue路由传参(两种方法总结)
- Centos 部署.net Core