static, const

static 静态的,类的静态成员函数,静态成员变量是和类相关的,但不和具体对象相关。即使没有具体对象,也能调用类的静态成员函数和成员变量。一般类的静态函数就是一个全局函数,只是作用域在包含它的文件中。static 静态成员变量不能在类的内部初始化。在类的内部只声明,定义必须在类的外部。如 int Student:: rate=0.5;

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

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

const 只在对象生存期内是常量。不同对象的const数据成员的值是不同的。所以不能在类的声明中初始化const数据成员。

cosnt成员函数主要目的是防止成员函数修改对象的内容。即const成员函数不能修改成员变量的值,但可以访问成员变量。

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

class Test{
public:
    Test():a(0){}
    enum {size1=100,size2=200};
private:
    const int a;//只能在构造函数初始化列表中初始化
    static int b;//在类的实现文件中定义并初始化
    conststatic int c;//与 static const int c;相同。
};  

int Test::b=0;//static成员变量不能在构造函数初始化列表中初始化,因为它不属于某个对象。
cosnt intTest::c=0;//注意:给静态成员变量赋值时,不需要加static修饰符,但要加cosnt。 

http://blog.csdn.net/tobefxz/article/details/14109697

在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:

    <数据类型><类名>::<静态数据成员名>=<值>

时间: 2024-10-14 13:08:49

static, const的相关文章

php类中的$this,static,const,self这几个关键字使用方法

本篇文章主要分享一下关于php类中的$this,static,final,const,self这几个关键字使用方法 $this $this表示当前实例,在类的内部方法访问未声明为const及static的属性时,使用$this->value='phpernote';的形式.常见用法如:$this->属性,$this->方法 <?php /** * 有关人类 */ class Person { private $name='张三'; public $sex; public funct

C语言中auto,register,static,const,volatile的区别

(1)auto 这个关键字用于声明变量的生存期为自动,即将不在任何类.结构.枚举.联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量.这个关键字不怎么多写,因为所有的变量默认就是auto的. (2)register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率. (3)static 常见的两种用途: 1>统计函数被调用的次数; 2>减少局部数组建立和赋值的开销.变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的存储

【C#】static,const, var等

在class里面,static属于静态字段/方法,是隶属于类的,不需要实例即可调用.没有static的成员就是属于对象,需要引用实例才能调用. ---------------------------- const一经赋值便不能更改 --------------------------- var不属于基本类型,属于类型推断.C#是强类型的语言,也就是说变量和类型必须要对应.和JS不一样.

C语言之头文件,static与const关键字

[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔记之类的自己写写笔记,今天整理成博客,以便自己以后回顾. [正文] C语言头文件:将其理解为C语言模块化编程向外提供一个接口描述文件.一般包括一些供外部函数或者文件使用的变量声明,函数声明,数据类型定义以及宏定义等.举例: /*************************************

c++中,static,和const,以及引用类型的作用

这是现阶段我自己总结的,希望各位补充一下: 先说static: 它表示静态 所以1.隐藏,全局变量或者全局函数加上static则其他文件无法访问,只在当前文件生效 2.保持变量的内容持久,由于static变量存储在全局区一经初始化则知道程序结束菜户被释放 3.默认初始化变量的值为0 4.在定义的时候将成员变量或者成员函数加上static,则变为属于类的成员,所有对象共享 const 关键词的作用 1.修饰变量    const int a=10,a是常量,在声明的时候初始化一次,以后不能在赋值

const,volatile,static,typdef,几个关键字辨析和理解

1.const类型修饰符 const它限定一个变量初始化后就不允许被改变的修饰符.使用const在一定程度上可以提高程序的安全性和可靠性.它即有预编译命令的优点也有预编译没有的优点.const修饰的变量被编译器处理只读变量(不是常量,常量是放到内存的只读区域的)放在内存中,由编译器限定不允许改变. (1)具有不可变性.  例如:const int Max=100; Max++会产生错误; (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患. 例如: void f(const i

php面向对象类中的$this,static,final,const,self这几个关键字使用方法。

php中this,self,parent三个关键字的作用 this,self,parent三个关键字之间的区别,从字面上比较好理解,分别是指这.自己.父亲.我们先建立几个概念,这三个关键字分别是用在什么 地方呢?我们初步解释一下,this是指向当前对象的指针(姑且用C里面的指针来看吧),self是指向当前类的指针,parent是指向父类的指针.我 们这里频繁使用指针来描述,可能是因为没有更好的语言来表达. <?php <span style="color:#ff0000;"

【C语言 C++】简单关键字Register,Const,Static,Volatile,typedef,Define的理解

Register 用register声明的变量称着寄存器变量,在可能的情况下会直接存放在机器的寄存器 中:但对32位编译器不起作用,当global optimizations(全局优化)开的时候,它会做出 选择是否放在自己的寄存器中:不过其它与register关键字有关的其它符号都对32位编译 器有效. Const 被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性. 它可以修饰函数的参数.返回值,甚至函数的定义体.(特别注意,在C语言中,const修 饰的变量本质依旧

PHP 面向对象中常见关键字使用(final、static、const和instanceof)

PHP 面向对象中常见关键字的使用: 00x1.Final :final关键字可以加在类或者类中方法之前,但是不能使用final标识成员属性. 作用: 使用final标识的类,不能被继承. 在类中使用final标识的成员方法,在子类中不能覆盖. 总结:final表示为最终的意思,所以使用final关键字的类或者类中的成员方法是不能被更改的. 00x2.Static :static关键字将类中的成员属性或者成员方法标识为静态的,static标识的成员属性属于整个类,static成员总是唯一存在的,