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{ 代码: } 只能执行一次,是在第一次使用类之前执行 类加载 ...
随机推荐
- 微服务全链路跟踪:springcloud集成jaeger
微服务全链路跟踪:grpc集成zipkin 微服务全链路跟踪:grpc集成jaeger 微服务全链路跟踪:springcloud集成jaeger 微服务全链路跟踪:jaeger集成istio,并兼容u ...
- Python新手爬虫三:爬取PPT模板
爬取网站:第一PPT(http://www.1ppt.com/) 此网站真的良心 老样子,先上最后成功的源码(在D盘创建一个"D:\PPT"文件夹,直接将代码执行就可获取到PPT) ...
- 【漏洞分析】OSN 代币攻击事件:一笔资金伪造多个分红大户
背景 OSN 是一种 fee on transfer 代币,会根据用户分红账户的余额对用户发放分红.攻击者利用漏洞增发分红账户的余额,随后触发分红机制完成获利. OSN:https://bscscan ...
- 后缀数组,SA
主要是 \(O(n\log n)\) 倍增求 SA. (为什么这么短) const int N = 1e6 + 9; int n; int sa[N], sa_tmp[N], rk[N], ork[N ...
- Mongodb入门2
$push 修饰符:用于往数组中追加元素 db.workmates.update({name:'xiaowang'},{$push:{interseta:"PHP"}}) ...
- 工具 – VS Code Extensions
前言 分享我用着的 Extensions. Angular Language Service 不用介绍,用 Angular 的必装. Better Comments 让注释有多点颜色 more col ...
- Nuxt Kit 中的页面和路由管理
title: Nuxt Kit 中的页面和路由管理 date: 2024/9/17 updated: 2024/9/17 author: cmdragon excerpt: 摘要:本文介绍了Nuxt ...
- 10 分钟快速搞懂 Lambda 表达式
Lambda简介 Lambda表达式是Java8引入的一个重要特性,相当于一个语法糖. 语法糖(Syntactic sugar)是指在编程语言中引入的一种语法,它可以使代码更易读.更简洁,但并没有引入 ...
- Spring —— 初识
简介 Spring 家族 Spring Framework 系统架构
- Python 项目配置管理框架技术选型
一.背景介绍 在实际生产项目中,不同环境(如开发.测试.生产环境)常有不同配置需求,如数据库链接等.我们期望一份代码无需改动,仅通过单一配置变量调整就能适配和使用多个环境,实现 "一份代码, ...