静态成员

类与对象6(静态成员:平均分)

匿名 (未验证) 提交于 2019-12-02 23:34:01
题目描述 输入多个(不超过20个)学生的学号与分数,计算所有学生的平均分。 要求:使用类的静态成员来计算。 输入 多个学生的学号与分数。 输出 所有学生的平均分(保留2位小数)。 样例输入 Copy zhangsan 500 lisi 528 wangwu 546 zhaoliu 512 #include #include using namespace std; class Student { private: char *name; //姓名 int score; //成绩 static int count; //记录对象个数 static int sum; //记录总成绩 public: Student(char name,int score) { this->name=name; this->score=score; } //构造函数 int getsum(); //计算总成绩 static double average(); //获取成绩平均值 }; int Student::count=0; int Student::sum=0; int Student::getsum() { count++;//记录个数 return sum+=score;//求和 } double Student::average() { double x; x=sum/(count 1.0);

java笔记

独自空忆成欢 提交于 2019-12-02 23:22:42
=====第一个java程序===== public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } 命令 $ javac HelloWorld.java $ java HelloWorld Hello World javac 后面跟着的是java文件的文件名,例如 HelloWorld.java。 该命令用于将 java 源文件编译为 class 字节码文件 java 后面跟着的是java文件中的类名,例如 HelloWorld 就是类名, 如: java HelloWorld。 =====package===== 1.解决类名冲突的问题 2.同一个包中的类不需要被导入,当代码使用外部包中的类时,需要用import语句导入包含该类的包。 3.代码使用外部包中的类,另外一个方法是在代码中使用类的完全限定名称。例如,在使用Scanner的代码中,如果省略了导入Scanner的语句,则需要在使用Scanner类的位置使用Java.util.Scanner 4.Java编译器默认为所有的Java程序引入了JDK的Java.lang 包中的所有的类。其中定义了一些常用类:System、String、Object、Math等

类中静态成员函数的使用

流过昼夜 提交于 2019-12-01 09:51:12
类中静态成员函数一般对静态成员调用 ,而要调用其非静态成员时,则类似于函数形参引用类一样(然其有一种情形,即不建立类对象,亦可引用静态成员函数,如:STATIC_A::disp( );),其代码如下: #include "stdafx.h" #include using namespace std; class STATIC_A{ public: STATIC_A (); ~STATIC_A (){}; void plus(){ c=c+100; }; static void disp(STATIC_A &w); public: int a; float b; static int c; }; int STATIC_A::c=100; STATIC_A::STATIC_A (){ //构造函数一般给变量一个初始值 a=100; b=10*a; }; void STATIC_A::disp(STATIC_A &w){ w.plus(); //调用类中普通成员函数 cout<<"a="<<w.a<<"\t"<<"b="<<w.b<<"\t"<<"c="<<c<<endl; //注意c变量与a、b变量使用异同 }; int _tmain(int argc, _TCHAR* argv[]) { const int t=6; STATIC_A A[t]; //使用数组结构的类 for

PHP面向对象(OOP):.static和const关键字的使用(self::)

馋奶兔 提交于 2019-12-01 08:31:42
static关键字是在类中描述 成员属性 和 成员方法 是静态的;静态的成员好 处在哪里呢?前面我们声明了“Person”的人类,在“Person”这个类里如果我们加上一个“人所属国家”的属性,这样用“Person”这个类实 例化出几百个或者更多个实例对象,每个对象里面就都有“所属国家”的属性了,如果开发的项目就是为中国人而开发的,那么每个对象里面就都有一个国家的属性 是 “中国“其它的属性是不同的,如果我们把“国家”的属性做成静态的成员,这样国家的属性在内存中就只有一个,而让这几百个或更多的对象共用这一个属性, static成员能够限制外部的访问,因为static的成员是属于类的,是不属于任何对象实例,是在类第一次被加载的时候分配的空间,其他类是无法访问的,只对类的实例共享,能一定程度对类该成员形成保护 ; 从内存的角度我们来分析一下,内存从逻辑上被分为四段,其中对象是放在“堆内存”里面,对象的引用被放到了“栈内存“里,而静态成员则放到了“初始化静态段”,在类第一次被加载的时候放入的,可以让堆内存里面的每个对象所共享,如下图: 类的静态变量,非常类似全局变量,能够被所有类的实例共享,类的静态方法也是一样的,类似于全局函数。 <? class Person { //下面是人的静态成员属性 public static $myCountry = "中国"; // var $name;

读书笔记《深度探索c++对象模型》(4) - 类函数语意

和自甴很熟 提交于 2019-12-01 05:00:21
一、类成员函数调用方式 非静态成员函数,要求非静态成员函数应与一般的非成员函数有相同执行效率,本质上,非静态的成员函数会被转为对等的非成员函数的实体( 即:非静态成员函数会被改写,加入 this 指针,并对函数内部的非静态成员变量的存取修改为由 this 指针来存取,最后将该函数重写为一个外部函数进行名称重命名,此时非静态成员函数与非成员函数别无二致了 )。 在非静态成员函数被重写为外部函数时的名称重命名操作,但此操作因不同的编译器实现不同,一般基于类名和函数参数类型、个数等来实现(为区分不同类重名成员变量、重载的非静态成员函数)(重命名操作,其实除了包括成员函数和虚函数外,静态成员函数也会被重命名)。 虚成员函数,因虚函数的存在,类中需增加一个 vptr 的指针,当然该指针名称也会被重命名以满足区分多继承时的多个 vptrs 。当通过对象或指针调用虚函数时,需先获取到虚指针再加上对一个虚函数所在的 slot 索引数字即可,即形如: (*ptr->vptr[someindex])(ptr)。 虚成员函数在通过指针对象调用虚函数和通过类对象调用虚函数的区别,前者可能需要通过(*ptr->vptr[someindex])(ptr)方式来调用,而后者可能直接用重名后的虚函数直接调用即可如:somefunc_XXX(&someobj)而不是(*obj.vptrsomeindex[(&obj

C++语言程序化设计——第三次作业

我的未来我决定 提交于 2019-11-30 17:05:09
C++语言程序化设计——第三次作业 第五章知识重难点剖析 一、知识点——类的静态成员 定义: 静态成员,指的是在c++类中声明成员时可以加上 static 关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。即声明为static的类成员或者成员函数便能在类的范围内同享。 ——来源:百度百科·静态成员 目的: 解决同一个类的不同对象之间数据和函数共享问题 优点: 可以兼顾数据的共享与保护 静态数据成员 静态数据成员具有静态生存期。由于静态数据成员不属于任何一个对象,因此可以通过类名对它进行访问,一般的用法是“ 类名::标识符 ”。 静态函数成员 静态函数成员可以直接访问该类的静态数据和函数成员。而访问非静态成员,必须通过对象名。 二、代码实例——具有静态数据和函数成员的Point类 class Point{ //Point类定义 public: Point(int x=0,int y=0):x(x),y(y){ count++; } Point(Point &p){ x=p.x; y=p.y; count++; } ~Point(){count--;} int getX(){return x;} int getY(){return y;} static void showCount(){ //静态函数成员 cout<<" Object count="<<count<

C++第三次作业static

六月ゝ 毕业季﹏ 提交于 2019-11-30 17:04:12
c++的static static对于C++的数据共享有着非常重要的作用。 在类中申明的static数据是从属于类而不是对象,也就是说所有的对象都拥有共同该数据信息: #include<iostream> using namespace std; class Point { public: Point(int xx = 0, int yy = 0) { X = xx; Y = yy; countP ++; } Point(Point &p); ~Point() { countP --; } int GetX() { return X; } int GetY() { return Y; } void GetC() { cout << "Object id = " << countP << endl; } //输出静态数据成员 private: int X, Y; static int countP; //静态数据成员声明,用于记录点的个数 }; Point :: Point(Point &p) { X = p.X; Y = p.Y; countP ++; //在构造函数中对countP累加,所有对象共同维护同一个countP } int Point :: countP = 0; //静态数据成员定义和初始化,使用类名限定 int main() { Point A(4, 5); //

JAVA知识点总结篇(二)

守給你的承諾、 提交于 2019-11-30 16:56:29
数组 一维数组 声明 数据类型[] 数组名; 数据类型 数组名[]; 分配空间 数组名 = new 数据类型 [数组长度]; 可以在声明的同时分配空间,分配空间之后数组中才能放数据,数组元素都是通过下标来访问,声明数组的同时赋值时不能指定数组长度; foreach: for(元素类型 元素变量:遍历对象){ 执行的代码; }; 二维数组 声明并分配空间: 数据类型[][] 数组名 = new 数据类型 [行的个数][列的个数]; 在定义二维数组时可以只指定行的个数,然后再为每一行分别指定列的个数,若每行列数不同,则创建的是不规则的二维数组; 方法 定义语法: 访问修饰符 返回值类型 方法名(参数列表){ 方法体; }; 分类: 无参无返回值方法; 无参带返回值方法; 带参无返回值方法; 带参带返回值方法; 调用方法: 对象名.方法名() 调用带参方法时,必须保证实参的数量,类型,顺序和形参一一对应; 调用方法时,实参不需要指定数据类型; 方法的参数既可以是基本数据类型,也可以是引用数据类型,当有多个参数时,多个参数间以逗号分割; 重载:在同一个类中,方法名相同,方法参数个数、顺序或类型不同称为方法的重载,与方法的修饰符或返回值无关系; 类与对象 类是模子,确定对象将拥有的特征(属性)和行为(方法),特点:类是对象的类型,具有相同属性和方法的一组对象的集合; 定义类的步骤: 定义类名

类的静态成员

霸气de小男生 提交于 2019-11-30 16:48:34
类的静态成员 面向对象的设计方法兼容数据的保护和共享,静态成员的提出是为了解决不同对象之间数据共享问题的。例如要统计人员个数,出现次数等等都需要用到静态处理。静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括静态数据成员和静态成员函数)。 首先我们要搞懂 静态变量生存的周期 静态成员变量在程序启动时被分配,在程序结束时被释放,其生命周期为程序的生命周期。基于这个类的所有对象只有一个静态成员变量的拷贝,所以一个函数结束时,静态变量仍然在内存中的静态存储区里保存,直到脚本结束才会被注销。 1.静态数据成员 如果我们需要面向对象中“类属性”,这个属性为整个类拥有,不属于其中某一个对象,从而体现了整个类的数据共享。此时我们就用用static声明静态成员。 由于静态数据成员不属于任何一个对象,我么可以用类名对他进行访问,一般用法是 类名::标识符 ,但是在类中也要进行定义性声明。 类的静态数据成员需要类之外定义是因为要单独给他们分配空间。 例如书上5-4中具有静态成员的point类 #include<iostream> using namespace std; class point { public: point(int x=0,int y=0):x(x),y(y){ count++; } point(point &p); ~point()

c++静态成员

人走茶凉 提交于 2019-11-30 15:11:39
c++语言中,类可以当作模板,利用模板可以制造出许多具有相同属性的变量,即对象,在各个对象中,他们相互独立,每个对象的值都可以不同,但问题也随之而来,对于某一些数据,我们并不想它们在不同对象是不同的,举个栗子:现在某公司需要统计所有员工为此设计了一个员工类,里面包含一些员工的信息,如姓名,编号等。除此之外,类里还有一个员工总人数属性,这个属性的值无疑对每个这个类的实例来说都具有相同的值,这该如何设计呢?可能有些人会想,为每个对想赋予想同的值就行了呗!好吧,我原谅你的天真。c++的设计者们当然有着绝妙的想法(要不然咋当设计者,还是回家麦红薯去吧😀),c++为这种需要所有对象保持一致的值(也就是数据共享)提供了一种方法,就是将其申明为类变量(也叫类的静态变量),用关键词static修饰;话不多说,上代码: #include"pch.h" #include<iostream> using namespace std; class Empolyee { //员工类 private: int salary; //薪水 string name; //姓名 static int count; //总人数 int num; //编号 public: Empolyee(int salary, string name, int num) :salary(salary), name(name), num