static 系统管理员 2022-03-19 15:37 121阅读 0赞 ### 文章目录 ### * * c中的static、C++中static拓展 * static修饰类中成员变量 * static修饰类中成员函数 * static 实例 ## c中的static、C++中static拓展 ## * 在c中的作用C++中依然保留: 1. 修饰变量:放在静态区,只初始化一次,局部变量下次使用还是上次值;全局变量只能在本文件中访问。 2. 修饰函数:只对本文件可见,其他文件不能使用,也可以定义重名函数。 * C++拓展 1. static修饰成员变量:变量在类内声明,在类外定义,类之间共享。 -------------------- ## static修饰类中成员变量 ## * 依然存放在静态区,初始化需要在类的外面进行。 * 静态成员变量 属于整个类,不属于某个对象,所以对象之间共享;而且计算每个对象的大小也不包含静态变量。 * 静态成员变量在main函数之间就已经分配空间,所以可以通过对象访问,也可以通过类名访问如:Person::m\_b class Person { public: Person(int a):m_a(a){ } static int m_b; private: int m_a; }; int Person::m_b =10; //静态成员变量需要在类外初始化 int main(void) { Person A(1), B(2); A.m_b++; //m_b=11 B.m_b++; //m_b=12 Person::m_b++; //m_b=13; } -------------------- ## static修饰类中成员函数 ## * 上面的例子申明的m\_b是public,如果是private,则在外部访问不了,需要提供静态函数(只能调用静态成员变量,但是普通函数可以调用静态变量;因为不属于具体对象所以没有this指针): class Person { public: Person(int a):m_a(a){ } static int& Getb(void) { return m_b; } private: int m_a; static int m_b; }; int Person::m_b =10; //静态成员变量需要在类外初始化 int main(void) { Person A(1), B(2); A.Getb()++; //返回的是引用可以作为左值 , 结果 11 B.Getb()++; //结果 12 Person::Getb()++; //结果 13 cout << Person::Getb() << endl; } -------------------- ## static 实例 ## * 问题描述:有一个学生类,每个学生考试都有得分,创建几个学生;求最后学生个数和平均分 #include "stdafx.h" #include <iostream> using namespace std; class Student { public: Student(int a) :m_score(a) //每构造一个学生,个数和分数就累加 { num++; sum_score += m_score; } static double& Get_Sum(void) //提供静态方法,获取总分 { return sum_score; } static int& Get_Num(void) //提供静态方法,获取总人数 { return num; } ~Student() { num--; sum_score -= m_score; } private: int m_score; static int num; static double sum_score; }; int Student::num = 0; //静态成员变量需要在类外初始化 double Student::sum_score = 0.0; int main(void) { Student A1(1); Student A2(2); Student A3(3); Student A4(4); Student A5(5); Student A6(6); cout << "total number of students: " << Student::Get_Num() << endl; cout << "the average score is: " << Student::Get_Sum() / Student::Get_Num() << endl; return 0; } 结果: ![在这里插入图片描述][20190217202459600.png] [20190217202459600.png]: /images/20220319/040d057271c74086884c78eddeae2230.png
相关 Static > \很多成员变量只写一个,但每个对象都可以使用,说明成员变量或者方法存在属性,属于对象/类本身 > \ java成员变量中是通过是否有static修饰区分类/对象 > 骑猪看日落/ 2023年10月07日 18:22/ 0 赞/ 18 阅读
相关 static 参考:[https://blog.csdn.net/zdb292034/article/details/80720051][https_blog.csdn.net_zdb292 清疚/ 2023年01月23日 06:57/ 0 赞/ 15 阅读
相关 static static简介 static是一个修饰符,可以修饰属性、方法、内部类、初始化块, 称为静态成员或类成员,不能修饰局部变量和构造器 什么时候需要使用静态的成员 怼烎@/ 2022年12月27日 02:14/ 0 赞/ 18 阅读
相关 static 1 C++中 简介 C\与C++的static有两种用法: [面向过程][Link 1] [程序设计][Link 2]中的static和 [面向对象程序设计][L 今天药忘吃喽~/ 2022年09月18日 04:50/ 0 赞/ 171 阅读
相关 static 类中的静态成员真是个让人爱恨交加的特性。我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动。 静态类成员包括静态数据成员和静态函数成员两部分 朱雀/ 2022年08月09日 05:10/ 0 赞/ 103 阅读
相关 final static和static ![Image 1][] ![Image 1][]![Center][] ![Image 1][] ![Center 1][] ![Cent 你的名字/ 2022年06月03日 10:55/ 0 赞/ 237 阅读
相关 static package com.atguigu.java1; / static,静态的,可以用来属性、方法、代码块(或初始化块)、内部类 客官°小女子只卖身不卖艺/ 2022年03月24日 19:10/ 0 赞/ 113 阅读
相关 static 文章目录 c中的static、C++中static拓展 static修饰类中成员变量 static修饰类中成员函数 系统管理员/ 2022年03月19日 15:37/ 0 赞/ 122 阅读
相关 static static C++的static有两种用法,面向过程程序设计中的static和面向对象程序设计中的static 前者应用于普通变量和函数,不涉及类;后者主要说明stat 末蓝、/ 2022年03月16日 02:38/ 0 赞/ 126 阅读
相关 static static静态 static应用范围:可用于内部类、方法和变量。 是一个修饰符,用来修饰变量、方法没有被static修饰的对象称为实例变量 静态变量,则 浅浅的花香味﹌/ 2021年09月10日 23:10/ 0 赞/ 262 阅读
还没有评论,来说两句吧...