const与static的含义:

  1. const定义的常量在超出其作用域之后其空间会被释放。

  2. 而static定义的静态常量在函数执行后不会释放其存储空间。

  3. static表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数几乎就是一个全局函数,只不过它的作用域限于包含它的文件中。


static成员变量、const成员变量、static const 成员变量:**

初始化:

  1. static成员变量不能在类的内部初始化,在类的内部只是声明,定义必须在类定义体的外部,通常在类的实现文件中初始化。例如:double Account::Rate = 2.25;static关键字只能用于类定义体内部的声明中,定义时不能标示为static。

  2. const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。

  3. static const成员变量只能在类外就行初始化,static const interesting类型的成员变量例外。

补充:

  1. const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。所以不能在类的声明中初始化const数据成员,因为类的对象没被创建时,编译器不知道const数据成员的值是什么。

  2. 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成员函数:

  1. const成员函数主要目的是防止成员函数修改对象的内容。即const成员函数不能修改成员变量的值,但可以访问成员变量。当方法成员函数时,该函数只能是const成员函数。

  2. static成员函数主要目的是作为类作用域的全局函数。不能访问类的非静态数据成员。类的静态成员函数没有this指针,
    这导致:1、不能直接存取类的非静态成员变量,调用非静态成员函数; 2、不能被声明为virtual。


static、const、static const分析相关推荐

  1. C语言易混淆关键词详解-const, static, extern, typedef, 声明

    Const Const关键词并不能把一个变量变成一个常量, 在符号前加上const表示这个符号不能被赋值, 即他的值对这个符号来说是只读的, 但并不代表这个值不能用其他方法去改变. 通过下面的例子就能 ...

  2. const static 数组指针

    const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令 **************常量必须被初始化************************* cons的作用     ...

  3. c++ const static

    const作用: 1.定义常量,可以保护被修饰的东西,防止意外的修改,增强程序的健壮性. const int Max = 100; void f(const int i) { i=10;//error ...

  4. 03 - const static extern

    const是一个C语言的关键字,它限定一个变量不允许被改变.使用const可以在一定程度上提高程序的安全性和可靠性,再者在看别人的代码作品的时候也可以有助于清晰理解const所起的作用. 1.cons ...

  5. dim private public static_PHP中const,static,public,private,protected的区别

    const: 定义常量,一般定义后不可改变 static: 静态,类名可以访问 public: 表示全局,类内部外部子类都可以访问: private: 表示私有的,只有本类内部可以使用: protec ...

  6. C# static readonly 与 const 的区别

    static readonly 与 const 的区别: const 表达式的值是在编译时形成的: static readonly 表达式的值直到程序运行时才形成: 转载于:https://www.c ...

  7. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  8. QWT错误static struct QMetaObject const QwtPlot

    使用QWT例子oscilloscope出现如下错误: error LNK2001: unresolved external symbol "public: static struct QMe ...

  9. static, const, static const 与 const static

    1. static const/ const static, 意义一样 namespace NdpiTransformersTest{class TestMain{public: ~TestMain( ...

  10. 【C语言进阶深度学习记录】九 C语言中const的详细分析

    文章目录 1 const的分析 2 const本质的分析实验 2.1 代码案例分析 3 const修饰函数参数和返回值时的情况 3.1 代码案例分析 4 总结 1 const的分析 不管是C语言还是C ...

最新文章

  1. WPF入门教程系列九——布局之DockPanel与ViewBox(四)
  2. 阅读Book: MultiObjective using Evolutionary Algorithms (4) --- 3 种方法find Non-dominated set
  3. linux2.6内核链表
  4. Snmp扫描-snmpwalk、snmpcheck
  5. VTK:PolyData之RemoveVertices
  6. 【Boost】boost库asio详解7——boost::asio::buffer用法
  7. 作业调度进程c语言代码,进程调度 时间片轮转调度算法源代码(C语言)
  8. sizeof和strlen区别
  9. 龙卷风路径_关于龙卷风,看这篇文章就够了
  10. 【Android TV 开发】-->一些优秀 TV 开发相关框架 文章
  11. 表单项 —【input的required属性】
  12. OpenCV中八种不同的目标追踪算法
  13. annotations are not allowed here
  14. 已解决:`anonymous-namespace‘::SourceReaderCB::~SourceReaderCB terminating async callback
  15. 第10章 基础API与常见算法
  16. java读取本地图片在浏览器中显示
  17. 百度搜索引擎结果网址参数 相关提示位置(rsp)
  18. 泰斗破环神学习笔记——主界面开发
  19. 百度搜索高级语法技巧大全
  20. 如何使用 U 盘制作系统安装盘,安装 Windows 10 系统

热门文章

  1. “读心术”再升级,数字识别准确率可达90%
  2. 程序员需要掌握哪些软技能?
  3. TCP/UDP协议简要梳理
  4. Openstack api 学习文档 restclient使用文档
  5. Ubuntu下的QQ
  6. 37. Element appendChild() 方法
  7. 10. 单例模式(singleton pattern)
  8. oracle错误输出,oracle – SQL小提琴输出错误
  9. vue路由传多个参数_vue路由传参(两种方法总结)
  10. Centos 部署.net Core