C++静态成员对象与静态成员函数
静态成员对象
1.该静态成员对象是属于类的,而非某个对象。
2.该静态成员对象为类的所有对象所共享一份
3.该静态成员不占用类对象的空间。
静态成员函数
class 类名
{public:static 返回值 函数名(形参列表){//静态成员函数的函数体//静态成员函数体中只能访问类中的静态数据,不可以访问类中非静态数据。//因为static修饰的成员函数没有的this指针。所以不可调用类中的非静态数据。 }
};
static修饰的成员函数并非修饰函数的存储形式,修饰的是成员函数的级别,这个级别就是此将成员函数提升为一个真正带有全局作用域的函数。
只不过此函数是隐藏在类的作用域之中而已。
所以此时该成员函数也就没有this指针。
所以此函数不能调用类中的非静态属性或方法。
此函数是为了整个类而服务的,而非某个对象,不依赖于对象的调用,可以直接使用类域 : : 调用。
例:
创建类:
#include <iostream>
using namespace std;
class Stu
{
private:string name;int age;static int count;
public:Stu(string name, int age){this->name = name;this->age = age;count++;cout << "Stu的构造" << endl;}//2.返回本对象。const Stu setName(string name){this->name = name;return *this;}string getName()const{return this->name;}int getAge()const{return this->age;}static int get_Count(){return count;}void showName()const{cout << this->name << endl;}~Stu(){cout << "Stu的析构" << endl;}Stu(const Stu& other){this->name = other.name;this->age = other.age;cout << "Stu的拷贝构造" << endl;}
};
类外对静态变量初始化:
//静态全局变量类外初始化
int Stu::count = 0;
全局函数:
void showInfo(const Stu& stu)
{cout << "姓名:" << stu.getName() << ",年龄:" << stu.getAge() << endl;
}
主函数:
int main()
{Stu stu("zhangsan",18);showInfo(stu);stu.setName("lisi").showName();cout << "-------------" << endl;Stu* stu2 = new Stu("zhangsan",20);stu2->setName("lisi");stu2->showName();delete stu2;cout << "------------------" << endl;cout << Stu::get_Count() << endl; //2, 一共创建了两个对象return 0;
}
运行结果:
C++静态成员对象与静态成员函数相关推荐
- C++学习(五) 静态数据成员和静态成员函数
文章目录 1.静态成员: 1.1.说明 1.2.格式 2.静态成员函数 2.1.说明 2.2.格式 1.静态成员: 1.1.说明 静态成员包括静态数据和静态成员函数. (1).静态数据成员的定义与普通 ...
- C++类的静态数据成员和静态成员函数
目录 公有属性 静态数据成员 静态成员函数 公有属性 一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相 ...
- c++,static 静态成员变量 / 静态成员函数
静态成员变量: //静态成员变量(static) // //1.如果想在同类的多个对象之间实现数据共享 ,可以用静态 //成员变量,即用static修饰的成员变量,例 static int a; // ...
- 类的静态成员函数带来了什么好处,应该在什么时候使用?
函数的行为对所有派生类都一致时,可以声明为静态. 静态成员函数的作用基本上相当于一个带有命名空间的全局函数. 如一个数学类定义了一些函数 都可以声明伪静态的 Math.sin(x)等 好处很多,但所有 ...
- 类的静态成员与静态成员函数
静态成员 即定义出一些成员与类本身直接相关,而不是与类的各个对象保持关联. 1,声明静态成员 在成员的声明之前加上关键字static使得其与类关联在一起 class Test { public: ...
- C++静态数据成员和静态成员函数
在C++面向对象编程过程当中,对象与对象之间的数据不是共享,在设计类的时候,有时候需要一些对象之间共享的数据,除了把所要共享的数据设置为全局数据或者函数之外,还可以利用C++的静态机制. 1.静态数据 ...
- c++远征之模板篇——静态数据成员,静态成员函数
以下内容源于慕课网的学习整理,如有侵权,请告知删除. 1.静态数据成员 (1)不同于普通的数据成员,静态数据成员在没有实例化时,它也是存在的(即它是和类共存的): (2)它一般不依赖于构造函数的初始化 ...
- 静态数据成员与静态成员函数
3-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory limit: 65536K 题目描述 通过本题目的练习可以掌握静态数据成员和静态成员函数的用法 要求设计一个点类 ...
- 静态成员函数与静态数据的使用
#include <stdio.h> #include <stdlib.h> #include<math.h> #include <string.h> ...
最新文章
- python语言基础汇总
- SQL数据库面试题以及答案
- Python continue
- android保持数据库,android – 保持Firebase实时数据库中的数据始终保持同步
- 中石油训练赛 - Cafebazaar’s Chess Tournament(FFT)
- 解决Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示
- protobuf版本冲突
- #{}不自动改参数类型_如何在不刷新页面的情况下改变URL
- 关于JQuery全选/反选第二次失效的问题
- 万能的林萧说:我来告诉你,一个草根程序员如何进入BAT。 - 今日头条(www.toutiao.com)...
- [zhuan]asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
- 人型自走输入法(网页日语输入法)
- 用友U8打开起初采购入库单报错
- 加拿大计算机科学薪酬,加拿大最好找工作及薪酬最高的十大专业介绍
- 我国南北居民收入差距 正在扩大。
- Socket通讯--数据结构WSADATA
- Linux安装NVIDIA显卡驱动的正确姿势
- Please use torch.load with map_location=torch.device(‘cpu‘),If you are running on a CPU-only machine
- “快充”还是感觉慢,到底是什么原因?
- C# 绘制直角坐标系