C++中的类静态成员和静态成员函数[VC/C++编程]
本文“C++中的类静态成员和静态成员函数[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
(1)为什么需求类静态成员?
有时刻某个类的多个对象需求拜候一个全局对象,在这种情形下“供应一个全局对象”比“每个类都保持一个独立的数据成员”要更为有效.而类静态成员与全局变量相比,又有两点好处:(a)不存在与程序中其他全局名字冲突的大概性;(b)可设置为private,实现信息躲藏.
(2)类静态成员的特点
关于非静态数据成员,每个类对象都有自己的拷贝,而静态数据成员对每个类范例只有一个拷贝.由于静态数据成员分配在全局数据区,因此在程序开始运行时就必须存在,故静态数据成员的空间分配和初始化不大概在main函数或其他函数中完成(因而在部分类中也不答应呈现静态数据成员).这样一来,静态数据成员的空间分配和初始化只大概有以下三种途径:(a)类的头文件:这里有类的声明.但存在一个无法躲避的问题:关于静态数据成员,在程序中也只能存在一个定义,而类的头文件大概被反复引用而呈现反复定义;(b)main函数前的全局数据声明和定义处:这种办法也有问题,每一个利用该类的程序都必须在此处定义一下该类的静态成员,这是不实际的;(c)类定义的内部实现:这是最为抱负的方法,引用时只需包含头文件便可.
#include "account.h"
double Account::_interestRate = 0.05
(3)类静态成员的定义
在对静态数据成员举行定义时有以下几点注意事项:(a)在类定义之外定义时,静态成员的名字必须被其类名限定修饰,前不可再增添static;(b)像int等有序范例的静态数据成员可在类定义中初始化,但仍需在类定义外举行定义,但此时已不能指定初始值;
// 头文件
class Account
{
// ...
private:
static const int nameSize = 16;
static const char name[nameSize];
};
// 文本文件
const int Account::nameSize; // 必须的成员定义,此处不可再举行初始化
const char Account::name[nameSize] = "Saving Account";
(4) 类静态成员的拜候:
在类的成员函数中可以直接拜候该类的静态数据成员,而在非成员函数中可以利用成员拜候操作符或类名限定修饰的方法举行拜候.
(5)静态成员函数:
静态成员函数无法拜候属于具体类对象的非静态数据成员,也无法拜候非静态成员函数,他只能拜候静态数据成员和调用别的的静态成员函数.这样一来,就可以避免类的非静态数据成员蒙受篡改.静态成员函数没有this指针,任安在静态成员函数中显式或隐式地引用这个指针都将招致编译时刻错误.
以上是“C++中的类静态成员和静态成员函数[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |