在类型前面加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 ...
随机推荐
-
在内网中OWA第一次访问速度慢的问题
当网络环境为内网时,有时访问OWA站点一直卡在Office Web App 那里. 这是因为SharePoint有一个证书需要联网检索 此环境为SharePoint 2013 通过下面的三个步骤 ...
-
关于sql server远程访问Oracle数据库 OpenQuery查询返回多条数据的问题
在Sql Server远程访问Oracle 中的数据库表时: 远程语法通常为: select * from OpenQuery(Oracle链接服务器名称,‘查询语句’) eg: select * f ...
-
het smooth 组装高杂合度二倍体基因组前期数据处理
http://sourceforge.net/projects/het-smooth/ equencing technologies, such as Illumina sequencing, pro ...
-
C#获取进程的主窗口句柄的实现方法
通过调用Win32 API实现. public class User32API { private static Hashtable processWnd = null; public delegat ...
-
VB调用自持字体
VB调用自制字体我这里有一个C#的例子,请问如何在VB中实现啊. 我们写exe程序时,默认字体是宋体,比较难看,指定了其他字体,但是其他用户上没有你指定的这个字体的话,也会变成默认的宋体.解决的办法有 ...
-
poj3140Contestants Division
链接 这叫树形DP吗..?断开某条边 求剩下两颗树数权值和的差最小 dfs一遍 枚举边 查了n久 wa n次 dp数组没初始化.. 在poj上1A感觉应该挺爽 #include <iostre ...
-
ASP.NET中的Excel操作(OLEDB方式)
一:OLEDB方式操作Excel的个人理解 就是把要操作的Excel当作一个数据库,所有对Excel的操作,就变成了对“数据库”的操作.那么这时就需要有一个数据库的连接字符串. 代码如下: connS ...
-
Mac 上的 GLFW 环境配置
背景:GLFW 一.下载和编译 从官网下载源代码包:http://www.glfw.org/download.html (我下载的是 github 仓库上的) 按官方指南编译.总结如下: cd glf ...
-
学习Spring Security OAuth认证(一)-授权码模式
一.环境 spring boot+spring security+idea+maven+mybatis 主要是spring security 二.依赖 <dependency> <g ...
-
Visual Studio编译时报错“函数名:重定义;不同的基类型”
错误原因: 方法在还未声明的地方就使用了.由于使用的地方与定义的地方都是在同一个.c文件中,所以没有报未声明的错误. 解决方法: 把实现放到使用的前面,或者在include语句和宏定义后面加上函数声明 ...