C++静态函数

(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.光靠类中”其他“函数,不能将类中的某个“其他”函数当作线程的入口地址

静态函数的作用域在C++中是局限于定义这个函数的文件内部。\[2\]这意味着静态函数只能在定义它的文件内部使用,而在其他文件中无法调用。使用静态函数的好处是避免了函数调用时的压栈和出栈操作,从而提高了执行速度。\[3\]此外,静态函数还可以避免不同文件中函数同名的问题,因为静态函数的作用域仅限于定义它的文件内部。 #### 引用[.reference_title] - *1* [C++中,类的成员函数里定义的静态变量的作用域](https://blog.csdn.net/qq_46163829/article/details/123215219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [静态函数、全局函数静态变量、局部变量、全局变量的作用域,生命周期,以及内存中的存储位置(C/C++):](https://blog.csdn.net/weixin_46928280/article/details/123180847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C++静态函数和普通函数的区别](https://blog.csdn.net/apple_51801179/article/details/125861649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值