【C++】C++类的static 关键字理解】的更多相关文章

转载自:ZJE_ANDY static修饰类中成员,表示类的共享数据 1.static类成员 C++primer里面说过,static类成员不像普通的类数据成员,static类数据成员独立于一切类对象处在.static类数据成员是与类关联的, 但不与该类定义的对象有任何关系.即static不会像普通类数据成员一样每一个类对象都有一份,全部类对象是共享一个static类成员的. 例如A类对象修改了static成员为1,那么B对象对应的static类对象成员的值也会是1. 注意:static类对象必…
static 关键字 当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产生出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用. 我们有时候希望无论是否产生了对象或无论产生了多少对象的情况下,某些特定的数据在内存空间里只有一份,例如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必在每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量. class Circle { private double radius…
参考:http://www.weixueyuan.net/view/6349.html 总结: 类中的成员变量或成员函数一旦与static关键字相结合,则该成员变量或成员函数就是属于类的,而不是再是属于任何一个对象的,当然任何一个对象都可以共享该成员变量及成员函数. 静态成员变量在类内部声明之后还需要进行定义操作.在C++语法中规定静态成员变量会被默认初始化为0,类外定义可有可无. 首先静态成员变量的定义必须在任何程序块之外:其次调用该变量的时候可以直接用类名加上域解析符“::”加上变量名的形式…
类的定义 类的命名.首字母大写 大括号后面没有分号 成员变量 Java会自动初始化成员变量但是不会自动初始化局部变量: 可以在定义成员变量是直接初始化,成员变量的作用范围在整个类体 对象的创建和引用的概念 在main函数里创建一个对象要使用new语句,new语句创造的东西都在堆内存中,因为堆内存可以动态分配.但是我们实际上是new了一个对该对象的引用变量(在栈内存),他指向堆内存中new出来的对象.堆内存中的对象才是真正的对象.这个引用和c/c++中的指针很类似. 用图说明 构造方法 构造方法没…
String类 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例. 类 String 中包括用于检查各个字符串的方法,比如用于比较字符串,搜索字符串,提取子字符串以及创建具有翻 译为大写或小写的所有字符的字符串的副本. 字符串定义后不可更改 这里有个示例: String s1 = "123"; s1 += "4"; System.out.println(s1); //…
今天来看一下这么一个程序. #include<stdio.h> int count =1; int fun(void) { static int count =10; return count--; } int main(void) { printf("global\t\tlocalstatic\n"); for(;count<=10;count++) printf("%d\t\t%d\n",count,fun()); return 0; } 运行…
static关键字的含义及使用场景 static是Java50个关键字之一.static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法.(注意:不能修饰普通类,除了内部类,这是为什么?) class A { static { System.out.println("A : 静态代码块"); } static int i ; // 静态变量 static void method() { System.out.println("A:…
static关键字的新用法和总结: static这个关键字,也可以像“self”一样,代表“当前类”,用于访问一个类的“静态属性或静态方法”: 但, static,在应用中,更灵活,因此更常见! 因为static,它代表的是“调用”当前方法的类,而不是“其代码所在的类”: self它就比较死板,只代表这个单词本身所在位置的所在类. static关键字的使用总结 含义: 位置示例: 代表函数或方法中的静态变量 fucntion  f1(){ static  $v1 = 1; } 代表类中的静态成员…
回顾这两个关键字前,先考虑一个问题: Static变量存储在JVM中的位置,或者说static变量是如何被加载的? JVM会把类的静态方法和静态变量在类加载的过程中读入方法区(Method Area),相当于常驻内存,如果一个方法或者变量声明为static,可以节约内存,不必要为每个对象实例化的时候分配内存. >>final关键字 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.final类不能被继承,没有子类,f…
深入理解final和static关键字 参考:http://blog.csdn.net/qq1028951741/article/details/53418852 final关键字 final关键字可以应用于类.方法以及变量. final声明变量 final声明变量可以保证在构造器函数返回之前,这个变量的值已经被设置.详细可以看final声明的重排序规则.分为三种情况: final声明基本数据类型变量:该变量只能被赋值一次,赋值后值不再改变. final声明引用数据类型变量:final只保证这个…
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05…
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “static方法就是没有this的方法.在static方法内部不能…
问题 首先考虑一个全局变量的初始化顺序问题 在头文件1中: extern int b; ; 在头文件2中: extern int a; ; 源文件中包含了头文件1和头文件2,这种情况下a和b可能的值是什么呢? 虽然在开发过程一般不会出现上述这种情况,但是这核心的是一个全局变量初始化顺序的问题,这个问题在团队开发过程可能会碰到. 可以使用static的特性来解决此问题,static关键字作用一般有以下几点: 1. 静态全局变量,变量在该翻译单元是可见的,但是在其他翻译单元中是不可见的(翻译单元暂时…
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题.以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin05…
//类模版中的static关键字 #include<iostream> using namespace std; /* 类模板本质上是c++编译器根据类型参数创建了不同的类, c++编译器在利用类模板生成类的时候会为每个类生成一个static变量 那么对于类中的static关键字就非常好理解了 static关键字修饰的变量是属于类的 同一个类的对象共享类的static静态变量 类模板中的static修饰的变量数据类型必须是确定的 不可以是类型参数 因为静态变量在类对象之前初始化 这时候还没有通…
1.static变量 按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量:另一种是没有被static修饰的变量,叫实例变量. 两者的区别是: 对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的). 对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活). static成员…
函数内的static变量 static静态变量的理解 静态变量 类型说明符是static. 静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放).静态变量虽在程序的整个执行过程中始终存在,但是在它作用域之外不能使用. 另外,属…
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 Java对象究竟是什么? 创建对象的过程 创建多个对象时,内存的变化 无处不在的this和super关键字 static关键字 为何如此特殊 尾语 Java对象究竟是什么? 对象:对象是类的一个实例,有状态和行为. 类:类是一个模板,它描述一类对象的行为和状态. 例如 人 是一个类 其状态有:姓名.性别.身高.体重等 其行为:吃饭.睡觉.聊…
C++ static 函数的问题 近日读 C++ primer 中static 一章 , 有这么一句话, “静态成员函数的声明除了在类体中的函数声明前加上关键字static 以及不能声明为const 或volatile 之外与非静态成员函数相同出现在类体外的函数定义不能指定关键字static” 为什么不能在类体外指定关键字static , 这样设计的目的是什么,有什么用处? 2# 怎么说呢, 这是一个作用域的问题!成员函数的作用域是类域, 而在类体外加上static不是表示静态函数,表示的是函数…
在c++和java中static关键字用于修饰静态成员变量和成员函数 举例一个普通的javabean class AA { int a; static int b; geta/seta;//此处省略getset getb/setb; } 如果创建了一个对象AA, AA a =new AA(); 这个时候只会在内存中给这个对象分配四个字节,也就是a变量所占的字节数,因为static申明的全局变量在全局区中,是所有这个类的对象共有的,例如: a.setB(10); AA b =new A(); Sy…
静态成员是可以独立访问的,也就是说,无须创建任何对象实例就可以访问,而静态成员函数可不建立对象就可以被使用.   或者说静态函数与一般函数没有太大的区别,只是访问有限制,静态变量跟一般的全局变量的区别就是访问有限制. static变量 static变量不像普通的变量,static变量独立于一切类对象处在.static修饰的变量先于对象存在,所以static修饰的变量要在类外初始化.因为static是所有对象共享的东西嘛,必须要比对象先存在的 class test { private: publi…
如上图所示,我们这里模拟一下去车站买票的情形:这里有3个柜台同时售票,总共是1000张票,这三个柜台同时买票,但是只能一个柜台卖同一张票,也就是说1号票卖了之后我们就只能买2号票,2号票卖了之后我们只能买3号票!依次类推!直到卖完这1000张票,然后再从头开始卖票!如下代码演示: package com.bawei.multithread; //这里模拟售票窗口 public class TicketWindow extends Thread { //柜台名称,表示第几个柜台 private f…
//类继承中的static关键字 #include<iostream> using namespace std; /* 派生类中的静态成员 基类定义的静态成员,将被所有派生类共享 根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质 派生类中访问静态成员,用以下形式显示说明: 类名::成员 或者通过对象访问 对象名.成员 */ class PointA{ public: static int a; static void Print(){ cout <<…
Java SE5新增加@Override注解,它并不是关键字,但是可以把它当作关键字使用.当你想要覆写(重写)某个方法时,可以选择添加这个注解,在你不留心重载而并非覆写了该方法时,编译器就会生成一条错误信息. 方法重载:重载的时候,方法名要一样,但是参数类型或个数不一样,返回值类型可以相同也可以不相同.无法以返回型别作为重载函数的区分标准. 方法覆写(重写): 若子类中的方法与父类中的某一方法具有相同的方法名.返回类型和参数表,则新方法将覆盖原有的方法. 方法重载是编译时处理的,而方法覆盖是在运…
什么是面向对象程序设计? 我们称为OOP(Object  Oriented  Programming) 就是非结构化的程序设计 要使用类和对象的方法来进行编程 什么是类,什么是对象 类就是封装了属性和行为的一段程序,实现特定的功能.行为就是指方法,就是函数.什么是属性,就是自定义的字段,也就是定义的变量. 什么对象? 对象就是类的实例. 什么是封装? 隐藏属性实现细节,对外提供访问方式.即私有化属性,公有化提供属性的方法. 封装的作用? 避免直接访问属性造成出错或不确定性. package co…
:static关键字修饰局部变量::当static关键字修饰局部变量时,该局部变量只会初始化一次,在系统中只有一份内存 :static关键字不可以改变局部变量的作用域,但是可延长局部变量的生命周期,该变量直到整个项目结束的时候才会被销毁 :static修饰的全局变量:作用域仅限于当前文件,外部类不可以访问到该变量 ::则在当前类中实现,:,若某个文件中的全局变量不想被外界修改,则用static修饰该变量,则其作用域只限于该文件…
java中普通的顶级类是不能使用static关键字修饰的.只有内部类可以使用static修饰,也可以不使用staitc关键字修饰. java中的类可以是static吗?答案是可以.在java中我们可以有静态实例变量.静态方法.静态块.类也可以是静态的. java允许我们在一个类里面定义静态类.比如内部类(nested class).把nested class封闭起来的类叫外部类.在java中,我们不能用static修饰顶级类(top level class).只有内部类可以为static.   …
1. static修饰的类只能为内部类,普通类无法用static关键字修饰.static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() ).如下所示: public class OuterClass { public static class InnerClass{ InnerClass(){ System.out.println("============= 我是一个内部类'InnerClass' ============="); } } } publ…
static 一.概述 在c语言中static恰当的使用能让程序更加完美,细节上的严谨,代码会更好,也更利于程序的维护与扩展. 而static使用灵活,且又有两种完全无关的用法,所以整理总结一下. 二.static的两种用法: 1.static修饰局部变量,成为一个局部静态变量. 2.static修饰全局变量与函数,成为静态全局变量与静态函数. 三.相关涉及概念 可能会疑惑,修饰全局变量与修饰函数怎么会是一个用法? static涉及的东西也比较多,以下有几个概念需要明白. 1.什么是存储类 简单…
  静态变量在类加载时初始化,而非静态变量在创建对象时初始化.static关键字修饰的变量就是静态变量. 子类继承父类,子类在生成对象的时候,先初始化父类的成员变量,接着执行父类的构造器,完成父类的初始化,然后就过来初始化自身了.   参考链接:http://www.cnblogs.com/dolphin0520/p/3799052.html…