C++程序设计方法3:类中的静态成员
在类型前面加static修饰的数据成员,是隶属于类的,成为类的静态数据成员,也称为“类的变量”
静态数据成员被该类的所有对象共享(即所有对象中的这个数据域实际上处于同一个内存位置)
静态数据要在实现文件中赋初值,格式为:
Type ClassName::static_var = Value;
返回值类型前面加static修饰的成员函数,称为静态成员函数,它们不能调用非静态成员函数;
类的静态成员(数据,函数)既可以通过对象来访问,也可以通过类名字类访问;
#include <iostream>
using namespace std; class Test
{
static int count;
public:
Test() { count++; }
~Test() { count--; }
static int how_many() { return count; }
}; int Test::count = ; void print(Test t)
{
cout << "tests:" << t.how_many() << endl;
} int main()
{
Test t1;
cout << "test#" << Test::how_many() << endl;
Test t2 = t1;
cout << "test#" << Test::how_many() << endl;
print(t2);
cout << "test#" << t1.how_many() << "," << t2.how_many() << endl;
return 0;
}
类中的常量成员
使用const修饰的数据成员,称为类的常量数据成员,在对象的整个生命周期内不可以更改;
常量数据成员只能在构造函数的初始化列表中被设置,不允许在函数中通过赋值来设置;
若用const修饰成员函数,则该成员函数在实现时不能修改类的数据成员, 即函数体中不能有改变对象状态的语句;
若对象被定义为常量,则它只能调用以const修饰的成员函数,其他成员函数不允许调用;
C++程序设计方法3:类中的静态成员的更多相关文章
- C++ 类中的静态成员变量,静态成员函数
//类中的静态成员变量,静态成员函数 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; /* ...
- C++类中的静态成员变量与静态成员函数
最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下. 静态成员的概念: 静态 ...
- C++类中的静态成员变量和静态成员函数的作用
数据成员可以分为静态变量.非静态变量两种. 静态成员:静态类中的成员加入static 修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配 ...
- C++模板类中使用静态成员变量(例如Singleton模式)
一个最简单Singleton的例子: ///////// Test.h /////////template <class _T>class CTest{private:_T n;stati ...
- c++类中的静态成员
静态成员和非静态成员的区别: 类静态成员用static修饰,类的静态成员属于类本身,而不属于类的某个具体对象,静态成员被类的所有对象共享,因此某个对象对静态成员(数据成员)的修改对其对象是可见的.而类 ...
- C++类中的静态成员变量与静态成员函数的使用
代码: #include <iostream> #include <string> #include <cstdio> using namespace std; c ...
- C++程序设计方法4:类模板
类模板 在定义类时也可以将一些类型抽象出来,用模板参数来替换,从而使类更具有通用性.这种类被称为模板类,例如: template <typename T> class A { T data ...
- python: 面向对象:类和对象调用类中的变量和方法
一. 面向对象初识 我们在生活中做事都是面向过程的,前面实现一些基本逻辑功能代码也是用面向过程的语句实现的,后来学了函数,把这些功能又装到了函数里.但用面向过程的方法去写程序,只能实现一个功能,我们要 ...
- PHP 类中的魔术方法
定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call ...
随机推荐
- python 通用装饰器,带有参数的装饰器,
# 使用装饰器对有返回值的函数进行装饰# def func(functionName): # print('---func-1----') # def func_in(): # print(" ...
- .netcore读取配置文件
setting.json { "compilerOptions": { "noImplicitAny": false, "noEmitOnError& ...
- Ubuntu安装搜狗sougou输入法
昨天ubuntu闪屏后进不去系统,之后重新安装的Ubuntu14.04,在软件中心安装了新立得软件包管理器 在网上下载搜狗输入法forlinux 网址:http://pinyin.sogou.com/ ...
- ArcGIS 卷帘效果
一直没注意ArcGIS自带了卷帘功能,使用方法:调出Effects工具条,里面就有卷帘工具. AE开发参考: http://bbs.esrichina-bj.cn/esri/viewthread.ph ...
- ps命令显示uid而不是用户名的解决方法
- Codeforces 873F Forbidden Indices 字符串 SAM/(SA+单调栈)
原文链接https://www.cnblogs.com/zhouzhendong/p/9256033.html 题目传送门 - CF873F 题意 给定长度为 $n$ 的字符串 $s$,以及给定这个字 ...
- windows安装Python虚拟环境
1.pip install virtualenv 安装virtualenv镜像 3.virtualenv scrapytest 新建virtualenv 4.cd到\scrapytest\Scrip ...
- 20165235Linux安装及学习
(一)安装虚拟机 在安装虚拟机的过程中我遇到了许多问题,首先是因为没有将CPU虚拟化,解决方法是我首先通过打开BIOS界面打开security,virtualization,选择Enable.解决了无 ...
- day73 中间件 以及模板引擎
模板引擎: 基本实用{{k1}} if for 模板中自定义函数:操作步骤 1在已经注册的App中创建一个名字叫templates文件夹 2任意创建一个py文件, 3创建名字叫register 的L ...
- 使用 PySide2 开发 Maya 插件系列 总览
使用 PySide2 开发 Maya 插件系列 总览 使用 PySide2 开发 Maya 插件系列一:QT Designer 设计GUI, pyside-uic 把 .ui 文件转为 .py 文件 ...