C++语言中的 静态类型员 用法

原创 2015年11月19日 17:06:22

本人是新手。前几天专门学习了一下C++的静态类成员,在此总结一下C++静态类成员的用法。

一、类静态数据成员

1.为啥用类静态成员?

有时候在设计类类型的时候,需要该类的所有对象都访问一个全局对象。比如计算在程序中创建的类对象个数,或者共同拥有的一个值。这个时候,提供一个共同使用的全局对象比每个类对象维持一个独立的成员 更加有效。

类静态成员被当做该类类型的全局对象。即该类中静态数据成员只有一份。[静态数据成员没有进入程序的全局名字空间,而处理该类的类域中]。

2.类静态成员定义以及初始化

在类数据成员的声明前加上关键字 static即被声明为类的静态数据成员。

一般情况下,类静态成员在该类定义之外被初始化。初始化的时候,必须被类名限定修饰。例如 int MyTest::m_static = 1;//MyTest为类名

在程序中,类静态成员在程序中只能提供一个定义。因此类静态成员的初始化不能放在头文件中。一般我们放置实现的c文件中。作为特殊的。有序型的const静态数据成员可以在类体中用一常量值初始化。例如

//MyTest.h

class MyTest{

//...

private:

static const int size = 16;

static const char name[size];

};

//MyTest.c

const int MyTest::size; //定义

const charMyTest::name[size] = "this is test!";

在上述的例子中,int型为有序型,可以直接在类体中初始化,但是还是必须在实现文件中定义。

name是一个数组,不是有序型,因此不能在类体中初始化,必须在实现文件中初始化并定义。

3.类静态数据成员的访问。

类静态成员的访问有以下两种:

A.在类成员函数中,可以直接访问该类的静态成员

B.在非成员函数中,可以通过成员访问操作符或者类名限定修饰的名字直接访问它。

4.类静态数据成员的其他用法

A.类静态成员的类型可以为其所属类。如同非静态数据成员声明为该类对象的指针或者引用。例如

class Mytest{

//...

private:

static Mytest m_static_mem;

Mytest *m_pMem;

};

B.类的静态数据成员可以为类成员函数的缺省实参。

二、静态成员函数

类体中静态成员函数声明 为普通成员函数的前面加关键字static。此外静态数据成员声明不能用const,volatile修饰。

类体外静态数据成员的定义不能在前面加关键字 static

静态成员函数的调用与类的静态数据成员基本一样。

区别于普通的成员函数,静态成员函数没有this指针,因此访问了非静态数据成员的成员函数都不能声明为静态成员函数。

一般我们实现静态成员函数都是为了方便与对类的静态数据成员进行操作。



有错误之处,还请指出。谢谢!







强弱类型,动态静态语言比较(JAVA,C,C++,Python,Ruby,PHP,Perl)

Perl、PHP、Python、Java和Ruby的比较(另附几种解释语言语法法比较) 提问 ◆ Perl、Python、Ruby和PHP各自有何特点? ◆ 为什么动态语言多作为...

关于语言的动态静态类型,强弱类型(c,c++,java,php等)

链接:https://www.zhihu.com/question/19918532/answer/21647195 1. 先定义一些基础概念 Program Errors trapped ...

C++类静态成员的初始化和用法探讨

C++类静态成员的初始化和用法探讨

C语言基本数据类型:整型(int)用法详解

C语言基本数据类型:整型(int)用法详解    1. 整型int      C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int是整型之一,一般...

C语言基本数据类型:整型(int)用法详解

 1. 整型int    C 语言提供了很多整数类型(整型),这些整型的区别在于它们的取值范围的大小,以及是否可以为负。int是整型之一,一般被称为整型。以后,在不产生歧义的情况下,我们把整数类型和i...

基本蚁群算用法C++语言实现

  • 2010年05月21日 12:35
  • 381KB
  • 下载

C/C++const类型用法总结

const类型定义:指明变量或对象的值是不能被更新,引入目的是为了取代预编译指令  **************常量必须被初始化************************* cons的作用 ...

C++ 中operator用法:隐式类型转换

C++中的operator主要有两个作用,一是操作符的重载,一是操作符的转换。对于操作符的重载,许多人都不陌生,用以下这个小例子温故一下: class A {     public:     A...

标准C++中string类型的用法总结

标准C++中string类型的用法总结 who1753编程笔记围观921次暂无评论 要想使用标准C++中string类型,必须要包含 ...
  • anlun
  • anlun
  • 2014年12月28日 10:45
  • 356

C++中的operator操作符的用法:重载和隐式类型转换

作者:zero_learner 地址:http://www.cnblogs.com/yangxudong/p/3872053.html C++中的operator主要有两个作用,一是操作符...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++语言中的 静态类型员 用法
举报原因:
原因补充:

(最多只允许输入30个字)