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

C++复习笔记——C++ 关键字

default只能放在 switch语句所有的case 之后,并且是可选inline inline(内联)函数定义将在编译时在调用处展开。...inline函数一般由短小语句组成,可以提高程序效率。 static static静态静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为 0,使用时可改变其值。...在 C++ 类成员变量被声明static(称为静态成员变量),意味着它被该类所有实例所共享,也就是说当某个类实例修改了该静态成员变量,其修改值为该类其它所有实例所见;而类静态成员函数也只能访问静态成员...由于一个对象状态由该对象静态数据成员决定,所以随着数据成员改变,对像状态也会随之发生变化。...如果一个类成员函数被声明为 const类型,表示该函数不会改变对象状态,也就是该函数不会修改类静态数据成员。

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

C++避坑---关键字static使用及注意事项

其定义以及使用方法如下: //普通静态成员 class X { static int n; }; // 声明(用 'static') int X::n = 1; // 定义(...不用 'static') //常量静态成员 /*如果整型或枚举类型静态数据成员 被声明为 const(且 volatile), 那么它能以其中每个表达式均为常量表达式 初始化器直接在类定义内初始化...k; }; const int X::k = 3; //inline 静态数据成员 /*静态数据成员可以声明inline。...*/ struct X { inline static int n = 1; // C++17 起 }; 修饰类成员函数:即静态成员函数,该函数与静态成员一样,不关联到任何对象。...静态成员函数不能调用类静态成员,包括静态成员和静态成员函数。 参考文献 《C++ reference》

45810

終於弄明白C++關鍵字了(1)

//静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0(局部变量不会被初始化); static int i = 1; // note:1 //i就是在栈区分配了,会随着foo...4.靜態數據成員 对于静态数据成员,每个类对象(实例)都有自己拷贝。...; 2.静态成员函数可以任意地访问静态成员函数和静态数据成员; 3.静态成员函数不能访问静态成员函数和静态数据成员; 4.调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类对象或指向类对象指针调用静态成员函数...void GetSum() //这里加上static //静态成员函数不能访问静态成员函数和静态数据成员; { cout<<"sum = "<<s_sum...<em>inline</em> void Foo(<em>int</em> x, <em>int</em> y); // <em>inline</em> 仅与函数<em>声明</em>放在一起,無作用 void Foo(<em>int</em> x, <em>int</em> y){} void Foo(<em>int</em> x, <em>int</em>

27210

Java核心基础小册

静态块 以static修饰初始化块叫静态初始化块; 静态块也属于类,它加载时候被隐式调用一次,之后便会再被调用。...被static修饰成员内部类叫做静态内部类,否则叫静态内部类。 局部内部类 在方法内定义内部类叫做局部内部类,它仅仅在这个方法内部有效(不常用)。...静态内部类 静态内部类中不可以定义任何静态成员; 静态内部类 可以访问外部类实例变量; 外部类静态初始化块、静态方法不能访问静态内部类; 同名变量可以使用this....、{*n}、{n,}、{n,m})之后时,匹配模式是"贪心"。"贪心"模式匹配搜索到、尽可能短字符串,而默认"贪心"模式匹配搜索到、尽可能长字符串。...inputStream.close(); socket.close(); } 注意点: 在上面的程序中,如果我们不在数据读取和写入之后对服务状态进行标识,此时双端都会出现一个等待状态

1.1K10

C++编译与链接(0)-.h与.cpp中定义与声明

static函数 在不同cpp中可以定义函数原型一样函数 类 不同cpp中类名字可以一样 类成员与函数 在.h中定义,所有成员必须在类中声明,在cpp中实现 静态常量整形数据成员不能就地初始化...(*C++11中,标准允许使用等号=或者花括号{}进行就地静态成员变量初始化) 在类内部定义成员函数将自动作为inline处理 在.h外部定义函数需要加上inline说明 否则在被include...(*C++11中,标准允许使用等号=或者花括号{}进行就地静态成员变量初始化) #pragma once class A { public: const int i=50; }; error...需要到头文件以外去定义它) 类静态常量整形数据成员 可以就地初始化 如 class A { private: const static int i = 5; }; 模板(不考虑export)...- 不可以 (*C++11中,标准允许使用等号=或者花括号{}进行就地静态成员变量初始化) 类成员函数 ------------------ ---------------- 在.h外部定义函数需要加上

3.5K70

C++必知必会之基础知识-常用关键字(1)

修饰成员函数修饰成员函数使得不需要生成对象就可以访问该函数,但是在 static 函数内不能访问静态成员。...在函数内部使用static关键字声明变量是静态变量,它在程序生命周期内保持其值,不会在每次函数调用时重新初始化。静态变量存储在静态数据区,而不是栈上。.../ 输出 Static count: 3 return 0; } 在C/C++中,使用static关键字在类中声明成员函数被称为静态函数,也称为类静态成员函数。...class MyClass { public: static int staticData; // 静态数据成员声明 }; int MyClass::staticData = 42; //...inline内联函数 在C++中,inline是一个关键字,用于对函数进行内联展开。使用inline关键字声明函数被称为内联函数。

17640

Java中final、finally、finalize区别与用法

使用finally可以维护对象内部状态,并可以清理内存资源。特别是在关闭数据库连接这方面,如果程序员把数据库连接close()方法放到finally中,就会大大降低程序出错几率。...它可以用于以下四个地方: 1).定义变量,包括静态静态。 2).定义方法参数。 3).定义方法。 4).定义类。 定义变量,包括静态静态。...B;{B=20;} //在初始化块中初始化  //静态final变量不能在静态初始化块中初始化   //public final int C;static{//C=30; }  //静态常量,在定义时初始化...  public static final int STATIC_D=40;  //静态常量,在静态初始化块中初始化   public static final int STATIC_E;static...static final int STATIC_J; } 复制代码 我们运行上面的代码之后出了可以发现final变量(常量和静态final变量(静态常量被初始化时,编译会报错。

33620

C++类和对象(下)

---- 正文 先从上篇文章中结论开始学习 初始化列表 初始化列表是祖师爷认证成员变量初始化位置,初始化列表紧跟在默认构造函数之后,形式比较奇怪:主要通过 : 、, 和 ()实现初始化 class...初始化列表基本形式: 紧跟在默认构造函数之后,首先以 ; 开始 初始化格式为 待初始化对象(初始值) 之后待初始化成员都以 , 开头 不存在结尾符号,除了第一个成员用 ; 开头外,其他成员都用 , 开头...静态成员函数 静态成员为所有类对象所共享,不属于某个具体对象,存放在静态静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明静态成员可用 类名::静态成员 或者 对象.静态成员...来访问 静态成员函数没有隐藏 this 指针,不能访问任何 静态成员 静态成员也是类成员,受 public 、protected 、private 访问限定符限制 课代表简单总结: 静态成员变量必须在类外初始化...0; } 输出结果如下: 得益于 static 修饰成员变量统计 注意: 静态成员函数 不可以调用 静态成员变量,没有 this 指针 静态成员函数 可以调用 静态成员变量,具有全局属性

14220

javaserializable接口_javacloneable接口

静态变量序列化 序列化只能保存对象静态成员交量,不能保存任何成员方法和静态成员变量,而且序列化保存只是变量值,对于变量任何修饰符都不能保存。...如果把Person类中name定义为static类型的话,试图重构,就不能得到原来值,只能得到null。说明对静态成员变量值是不保存。...这其实比较容易理解,序列化保存是对象状态,静态变量属于类状态,因此 序列化并不保存静态变量。...当某些变量不想被序列化,同是又不适合使用static关键字声明,那么此时就需要用transient关键字来声明该变量。...在这种情况下,在序列化时根据需要在父类无参构造函数中对变量进行初始化,否则的话,父类变量值都是默认声明值,如 int默认是 0,string 型默认是 null。

92130

Effective C++ 第一章重点条款学习

private: static const int NumTurns=5; int scores[NumTurns]; ... }; 注意,因为此处是类成员声明范围内,所以上面只是变量声明和初始化...int a; int s[a]; 此时s[a]肯定报错了,为了解决这种问题,可以使用枚举: enum {a=5}; int s[a]; inline函数替代宏函数 inline关键字用来建议编译器把某频繁调用函数当做内联函数...本地静态对象(non-local static object): 静态对象可以是在全局范围定义变量,在名空间范围定义变量,函数范围内定义为static变量,类范围内定义为static变量,而除了函数中静态对象是本地...唯一需要做是:将每个non-local static 对象搬到自己专属函数内(该对象在此函数内被声明static) 。这些函数返回一个 reference 指向它所含对象。...换句话说, non-local static 对象被 local static 对象替换了。 解决方法: 将全局变量变为本地静态变量 使用一个函数,只用来定义一个本地静态变量并返回它引用。

1.1K10

Java面试集合(六)

抽象类中如果有抽象方法,那么子类继承这个抽象类之后,就必须要重写抽象类中 所有抽象方法。...(); } } 内部类有 静态静态,匿名类 语法: new 外部类().new 内部类() 成员内部类: 在成员变量位置上定义类为成员内部类。...静态内部类: 在成员位置上用static修饰内部类为静态内部类。 静态内部类只能访问外部类静态成员和本内部类成员;且不能访问外部类静态成员。...访问外部类中内部类,静态 Outer.Inner int = new Outer().new Innter(); 对静态内部类中静态成员 Outer.Inner int = new Outer(...).new Innter(); 用static声明内部类,则内部类变成外部类,用static声明内部类不能访问static外部类属性,外部类属性要用static才能访问。

33320

JAVA基础复习(重点)

; 构造方法,一般是用于为成员属性赋初始化值; 2、变量 2.1 局部变量 声明在构造方法、静态方法、实例方法、代码块中变量,都是局部变量; 不能使用static和访问修饰符修饰; 可以使用final...声明在所有方法体和代码块之外,并且使用static修饰变量; 可以使用访问修饰符修饰; 一般配合final使用,即public static fianl,标识符使用大写; 类变量被分配在静态存储区...、抽象方法、静态方法; 接口中不能声明实例方法,声明抽象方法时,不能使用static关键字修饰; 声明接口语句中,默认含有abstract关键字,抽象方法中也默认含有abstract关键字; 接口可以被实现...3; //静态内部类 public static class Inner{ public static int a = 2; public static void...= a; } public T getA(){ return a; } //类上声明泛型不能作用在静态方法上 public static void

61420

Java基础教程(3)-Java变量和数组

常量有点变量只能被赋值一次,一旦被赋值之后就不能再次更改了;这种变量称为常量;在Java中,使用关键字final标识常量;例如: public final int NUM = 20;常量一般习惯为全部大写...static代码块 用 static 表示变量级别,一个类中静态变量,不属于类对象或者实例。...Java 不允许在静态块中使用静态变量。一个类中可以有多个静态块;Java 可以嵌套使用静态类,但是静态类不能用于嵌套顶层。静态嵌套类使用与其他顶层类一样,嵌套只是为了便于项目打包。...另一种数组声明语法声明数组还有第二种格式:type var-name; 这里,方括号紧跟在类型标识符type后面,而不是跟在数组变量名后面。...例如,下面的两个定义是等价int al[] = new int[3]; int[] a2 = new int[3];这种数组声明格式主要是为了方便。

8010
领券