C++学习——类当中static关键字的作用
一、类和对象
我们知道类是“行为”和“属性”的集合,我们可以通过类来实例化对象,从而定义对象的“行为”和“属性”。比如:
class Car
{
String brand;
String license;
String color;
}
Car Toyota;
这里定义了“Car”的类,通过“Car”这个类实例化了“Toyota”。那么类当中的所有属性都是Toyota的。
二、static关键字的作用
class Car
{
public:
String brand;
String license;
String color;
static int totalCars; //静态变量,所有对象共享
}
Car Toyota;
Car Benz;
这里我实例化了2个对象,分别是“Toyota”和“Benz”,他们共同都拥有上述的三个属性(变量)“brand”、“license”、“color”,只是共享属性的定义。
不过我有定义了静态变量“totalCars”,这个变量是所有实例所共有的,即所有实例之间不仅共享“totalCars”的定义,还共享它的值。
class Car
{
public:
String brand;
String license;
String color;
static int totalCars; // 静态变量,所有对象共享
};
int Car::totalCars = 0;
int main()
{
Car Toyota;
Car Benz;
Benz.totalCars ++;
Toyota.totalCars ++;
cout << "Total cars: " << Car::totalCars << endl; // 输出: Total cars: 2
return 0;
}
这里对2个对象的属性“totalCars”进行自增,再对其进行输出,结果为2。
证实了前面的说法。
需要注意的是,在类当中对变量进行静态声明只是告诉编译器这个类当中有一个静态变量,需要进行值的共享,此时并不会在实际的程序当中开辟内存空间。
只有类的外部对静态变量进行定义、初始化,此时才是正式对该变量开辟内存控件。
C++学习——类当中static关键字的作用的更多相关文章
- C#: static关键字的作用(转)
C#: static关键字的作用 static意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前 ...
- String类、static关键字、Arrays类、 Math类的一些学习心得
String类 java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如"abc" )都可以被看作是实现此类的实例. 类 String 中包括用于检查各 ...
- C#学习笔记随笔(1)----C#中static关键字的作用
静态分配的,有两种情况: 1. 用在类里的属性.方法前面,这样的静态属性与方法不需要创建实例就能访问, 通过类名或对象名都能访问它,静态属性.方法只有“一份”:即如果一个类新建有N个 对象,这N 个对 ...
- static关键字的作用(修饰类、方法、变量、静态块)
1. static修饰的类只能为内部类,普通类无法用static关键字修饰.static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() ).如下所示: public c ...
- 【转载】Static 关键字的作用
原始日期:2016-07-16 17:53 一 普通的static关键字 1. 静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- static 关键字的作用
在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内(但在函数体外),一个被声明为静态 ...
- 转:C#: static关键字的作用
tatic意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前,表示每次重新使用该变量所在方法.类或自 ...
- Static关键字的作用及使用
1.使用static声明属性 如果希望一个属性被所有对象共同拥有,可以将其声明为static类型. 声明为static类型的属性或方法,此属性或方法也被称为类方法,可以由类名直接调用. class P ...
- Java学习笔记之——static关键字
static属于类的,不属于任何一个对象的 static关键字的应用场景: 1.静态代码块:在类下用static修饰的代码块 static{ 代码: } 只能执行一次,是在第一次使用类之前执行 类加载 ...
随机推荐
- “vscode #include 错误”的问题解决办法
确定gcc没问题的情况下 打开这个文件 把linux下的文件直接复制过来 然后加上路径就OK了
- C语言中的数据类型及其转换
目录 计算机中的数据类型 整型数据之间的转换 相同字长之间的转换 小字长转大字长 大字长转小字长 int.float.double之间的转换 float->double double->f ...
- 结合mysql 架构分析SQL查询语句和更新语句的执行
结合mysql 架构分析SQL查询语句和更新语句的执行 一:基础架构 mysql分为Server层和存储引擎层 Server层 涵盖了大多数mysql的核心服务功能,以及所有内置的函数(例如日期.加密 ...
- 6.13API接口服务类漏洞探针
ip地址解析:www.x.x.x.com, 对应网站目录为d:/wwwroot/xiaodi/ 而127.x.x.x,对应网站目录为d:/wwwroot/,可能存在网站备份文件zip,所以ip网址端口 ...
- openStack-train 1-搭建部署
openStack-train 搭建部署 当面对KVM集群的时候,我们对KVM的管理以及宿主机的管理就会遇到很大的难度,例如: 查看每一个宿主机有多少台KVM虚拟机? 查看每一个宿主机资源信息,每一个 ...
- Openstack-Train( 一)基础环境
openStack-train 搭建部署 当面对KVM集群的时候,我们对KVM的管理以及宿主机的管理就会遇到很大的难度,例如: 查看每一个宿主机有多少台KVM虚拟机? 查看每一个宿主机资源信息,每一个 ...
- c++11 动态内存与智能指针详解
c++ 动态内存与智能指针详解 一. 动态内存 (一)程序对象的生存期 全局对象在程序启动时分配,在程序结束时销毁. 对于局部自动对象,当我们进入其定义所在的程序块时被创建,在离开块时销毁. 局部st ...
- 【转】一种Vue应用程序错误/异常处理机制
在前端应用程序中,最常见的错误/异常类型可能包括以下几种: 语法错误:使用了一些错误的语法 运行时错误:由于执行期间的非法操作导致的 逻辑错误:由于程序逻辑错误 Http 错误:API 返回的错误 有 ...
- windbg配置问题汇总(记录)
.loadby sos.dll mscorwks.symfix c:\windows\symbols windbg配置问题汇总 1.Failed to find runtime DLL (clr.dl ...
- manim边学边做--弧形多边形
弧形多边形是一种结合了圆弧和多边形的图形,这类几何图形在设计中应用非常广泛. 比如在家居设计中,看看家里的沙发,餐桌和座椅等,它们的边角,靠背等地方都是弧形的设计,这种设计有效柔化了室内空间,使整体氛 ...