栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习笔记:静态成员指北

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习笔记:静态成员指北

目录

1.静态数据成员

2.静态成员函数

        2.1声明

        2.2调用

        2.3一些特别之处


1.静态数据成员

        应用背景:如果希望所有对象中的数据成员的值是一样的,那么便可以把它定义为静态数据变量。

        这里需要注意,通常情况下,如果只声明类而未定义对象,那么只有在定义对象时才会为数据成员分配内存空间。而静态数据成员不同,它不属于某一个对象,而是所有对象都可以引用它。所以它在内存中只占有一份内存空间,只要声明了类,即使不定义对象,也会为该静态数据成员分配内存空间。

        此外,静态数据成员在程序开始时便分配了内存空间,在程序结束时释放内存空间。

        下面的程序展示了静态数据成员的使用方法。

#include
using namespace std;

class Box
{
	public:
		Box(int,int);
		int volume();
		static int height;//以static关键字开头,把height定义为静态数据成员
		int width;
		int length;
	
 } ;
 
 Box::Box(int w,int len)
 {
 	width=w;
 	length=len;
 }
 
 int Box::height=10;//在类外对静态数据成员进行初始化 
 
 int main()
 {
 	cout< 

注意:不能通过参数初始化对静态成员进行初始化,对于上述程序中的Box类,下面定义的构造函数是错误的。

Box(int h,int w,int len):height(h){}

2.静态成员函数

        静态成员函数也可以定义为静态的。

        2.1声明

        只需在类中声明函数前加上关键字static。如下

static int sum();

        2.2调用

        在类外调用,需要类名与域运算符。

Box::sum();

       也可以使用对象名调用,但不代表该成员函数属于某一对象。

a.sum();

        2.3一些特别之处

        (1)静态成员函数不属于某一对象,属于这个类,因此静态成员函数没有this指针。

        (2)静态成员函数只能访问静态数据成员,不能访问非静态数据成员。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号