C++静态函数

本文详细解释了静态数据成员的概念及使用方式,说明了静态数据成员由类的所有对象共享,并展示了如何正确初始化静态数据成员。此外,还介绍了静态成员函数的特点,如其不具备this指针且只能访问静态数据成员,并探讨了静态成员函数的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)

静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中

不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行

静态数据成员被 类 的所有对象所共享,包括该类派生类的对象。即派生类对象与基类对象共享基类的静态数据成员


main() 

base a; 
derived b; 
a._num++; 
cout<<"base class static data number _num is"<<a._num<<endl; 
b._num++; 
cout<<"derived class static data number _num is"<<b._num<<endl; 

// 结果为1,2;可见派生类与基类共用一个静态数据成员



(2)

函数不是对象,它代表的是一段代码,位于代码段,而不是位于静态存储区——静态存储区是数据区的一种,用来存放在程序中定义的静态对象。

静态成员函数没有this指针,只能访问静态变量


1.对类的静态和非静态函数的不同的调用要求决定了它们在使用上的方便程度:非静态成员函数要通过对象调用,所以要求首先建立一个对象;而静态成员函数可不建立对象就可以被使用。因此,与类的非静态数据成员无关的成员函数,虽然可以被定义为非静态函数,但是如果定义为静态函数的话在使用上会更加方便。

一般函数
CCLP *pclp = new CCLP;
pclp->YourProceudre();

静态函数
CCLP::staticprocedure();

2.如果类的成员函数想作为回调函数来使用,一般情况下只能将它定义为静态成员才行。

3.光靠类中”其他“函数,不能将类中的某个“其他”函数当作线程的入口地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值