static静态成员函数

在类中。static 除了声明静态成员变量,还能够声明静态成员函数。

普通成员函数能够訪问全部成员变量。而静态成员函数仅仅能訪问静态成员变量。

我们知道。当调用一个对象的成员函数(非静态成员函数)时,系统会把当前对象的起始地址赋给 this 指针。而静态成员函数并不属于某一对象。它与不论什么对象都无关,因此静态成员函数没有 this 指针。既然它没有指向某一对象,就无法对该对象中的非静态成员进行訪问。

能够说。静态成员函数与非静态成员函数的根本差别是:非静态成员函数有 this 指针。而静态成员函数没有 this 指针。由此决定了静态成员函数不能訪问本类中的非静态成员。

静态成员函数能够直接引用本类中的静态数据成员,由于静态成员相同是属于类的,能够直接引用。在C++程序中,静态成员函数主要用来訪问静态数据成员。而不訪问非静态成员。

假设要在类外调用 public 属性的静态成员函数。要用类名和域解析符“::”。

如:

下面是一个完整演示样例。
<pre name="code" class="cpp">
#include<iostream>
#include<string>
using namespace std;class Student{
private:string name;int age;float score;static int number; //定义静态成员变量static float total;
public:Student(string name,int age,float score);Student(const Student & s);~Student();void setName(string n);string getName();void setAge(int a);int getAge();void setScore(float s);float getScore();void say();static float getAverage();
};
/*注意。假设构造函数的形參和 类的成员变量名字一样。必须採用 this -> name = name ,而不能够 写成 name = name*/
Student::Student(string name,int age,float score){this->name = name;this ->age = age;this ->score = score;number++;total += score;
}Student::Student(const Student & s){this ->name = s.name;this ->age = s.age;this ->score = s.score;
}Student::~Student(){}
string Student::getName(){return this->name;
}
int Student::getAge(){return this->age;
}
float Student::getScore(){return this ->score;
}void Student::setName(string n){this ->name = n;
}void Student::setAge(int a){this ->age =a ;
}void Student::setScore(float s){this->score =s;
}void Student::say(){cout << this->name <<" : " << this->age <<" : " << this ->score << " : " << Student::number <<endl;
}float Student::getAverage(){if(number == 0){return 0;}elsereturn total/number;
}
//静态变量必须初始化。才干够使用
int Student::number = 0;
float Student::total = 0;int main(int argc,char*argv[])
{//即使没有创建对象也能够訪问静态成员方法cout << "没有学生的时候的平均成绩"<< Student::getAverage() <<endl;Student s1("lixiaolong",32,100.0);Student s2("chenglong",32,95.0);Student s3("shixiaolong",32,87.0);s1.say();s2.say();s3.say();cout << "平均成绩为" << Student::getAverage() <<endl;system("pause");return 0;
}

转载于:https://www.cnblogs.com/liguangsunls/p/7281411.html

C++之类的静态成员变量和静态成员函数相关推荐

  1. C++静态成员变量和成员函数

    静态成员变量和成员函数 简介 sizeof不将静态成员变量的大小计算在内 可以通过类名来访问静态成员 静态成员函数不能访问类的非静态成员 简介 static加在局部变量的前面改变其存储类型使之成为静态 ...

  2. c++中静态成员变量和静态成员函数

    静态成员变量 在一个类中,若将一个成员变量声明为static,这种成员成为静态成员变量,与一般的数据成员不同,无论建立了多少个对象,都只想有一个静态数据的拷贝,静态成员变量,属于某个类,所有对象共享 ...

  3. 13.C++-静态成员变量、静态成员函数

    首先回顾下成员变量 能通过对象名能够访问public成员变量 每个对象的成员变量都是专属的 成员变量不能在对象之间共享 再来讲讲类的静态成员变量 介绍 静态成员变量属于整个类所有 静态成员变量的生命期 ...

  4. C++面试题-面向对象-静态成员变量以及静态成员函数

    C++面试题-面向对象-静态成员变量以及静态成员函数 问:在类中,静态数据成员和普通数据成员有何区别? 答: 普通数据成员属于类的对象,对象被创建后,普通数据成员才会分配内存.静态数据成员属于整个类, ...

  5. C++静态成员变量与静态成员函数

    类的静态成员有两种:静态成员变量和静态成员函数,语法是在普通成员变量和成员函数前加static关键字. 0.定义 class CRect{ public:void show();//普通成员函数sta ...

  6. C++的静态成员变量和静态成员函数

    C++的静态成员变量和静态成员函数 静态成员变量和静态成员函数算是C++面向对象编程中的一个重点和难点,这里的静态具体指什么呢?与普通的成员变量和成员函数相比,静态成员函数和静态成员变量是属于类的,而 ...

  7. 静态成员变量和静态成员函数

    静态成员变量 一个类中可以有一个或多个静态成员变量,所有的对象都共享这些静态成员变量,都可以引用它. static 成员变量和普通 static 变量一样,都在内存分区中的全局数据区分配内存,到程序结 ...

  8. 类中的静态成员变量和静态成员函数

    static静态成员函数 1.static 修饰成员变量 2.static修饰静态成员函数 引子: 静态成员函数: 注意: 3.const 修饰静态成员 静态成员案例 案例1:静态成员 统计类 实例化 ...

  9. qt 静态成员变量_Qt 静态成员函数的调用非静态成员变量,非静态成员函数

    在多人开发的项目中,一些通用的工具类接口可以用静态成员函数.方便调用,并且不容易调用错误. 静态成员函数不传递this指针(不能->),不识别对象个体,所以经常用于对静态数据成员进行操作.不能操 ...

  10. c++ ——静态成员变量和静态成员函数

    前言 c++ 静态成员变量用static 关键字来声明,是整个类的数据成员,其存储不占用某个具体对象的空间,其存储在静态存储区. c++ 静态成员函数用static 关键字来声明,用于处理静态成员变量 ...

最新文章

  1. CORS-跨域资源共享 解决跨域问题
  2. 如何使用JCA (J2EE 连接器架构)实现企业应用--转载
  3. 阿里云 ECS服务器 开放 8080 端口 -- 图解
  4. (需求实战_01) SpringBoot2.x 整合RabbitMQ_生产端
  5. 【算法】归并排序 小和 问题
  6. ACM-ICPC知识要点收集
  7. xargs与cp结合使用
  8. (转)美国的套利已经变成一门生意,而不是一门技术了
  9. 马蜂窝火车票系统服务化改造初探
  10. oracle根据身份证号码 计算年龄、性别
  11. Java枚举(enum)
  12. 如何自建微信外卖平台_本地外面平台怎么起步,如何自建微信外卖平台
  13. linux 服务器中文乱码问题解决
  14. 浅谈爬虫工作中HTTPIP的重要性
  15. python安装第三方包遇到的一些问题
  16. 小米手环2来电不震动,来电不提醒怎么办
  17. 企业绩效评价体系的四大层次
  18. .out文件转bin文件
  19. 基于JAVA评标专家管理信息系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  20. python 第三方模块

热门文章

  1. 特征工程之数据预处理(下)
  2. win10电脑插耳机没声音_电脑没有声音是什么原因 教您电脑突然没声音怎么解决...
  3. 死锁产生的原因及条件和手写死锁
  4. httpd 处理模型
  5. struts基础配置
  6. Django Python MySQL Linux 开发环境搭建
  7. Git Push 避免输入用户名和密码方法
  8. Atitit.java swing打印功能 api  attilax总结
  9. 在Matlab2006a中如何创建.net组件
  10. 2021泉州高考学校成绩查询,2021泉州市地区高考成绩排名查询,泉州市高考各高中成绩喜报榜单...