原文:静态成员函数和非静态成员函数的区别?

一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。 它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。 例如: 函数nsfn 可被认为它声明为void Sc::nsfn Sc this , int a 。对nsfn 的调用,编译像注解的那样进行转换,s的地址作为第一个传递的参数。 你并不实际写该调用,由编译来实现。 在函数内部,Sc ...

2013-08-12 10:58 0 11213 推荐指数:

查看详情

静态成员函数

就是再成员函数 定义前加一个 static 我们需要了解它的访问方式以及访问权限,以及一些特点 有个博主总结的好 传送门;https://blog.csdn.net/qq_25800311/article/details/85146173 一、静态成员的特点: (1)static数据成员 ...

Wed Sep 25 22:17:00 CST 2019 0 631
静态成员函数和普通成员函数区别

成员函数:无论静态函数还是非静态函数,都是属于类的(这一点与数据成员静态静态不同),对象并不拥有函数的拷贝.两者的区别在于:静态函数由类对象(加.或指针加->;)调用,这时将向函数传递this指针.而静态函数由类名(::)(或对象名.)调用,但静态函数不传递this指针,不识 ...

Sun Sep 02 09:49:00 CST 2012 0 3151
静态成员变量与静态成员函数

一、静态成员变量 类的静态成员变量是直接与类联系,属于类的成员而不是对象,供所有对象共享,存放于全局区,因而不计入类的内存计算。 静态成员变量可以通过类直接访问。 (1)静态成员变量的初始化 静态成员不属于类的任何对象,所以并不是对象建立时被定义的,所以它不能由类的构造函数初始化,一般 ...

Thu Jun 29 23:54:00 CST 2017 0 11443
静态成员函数和常成员函数

静态成员:不管这个类创建了多少个对象,静态成员在内存中只保留一份,静态成员用来解决同一个类中不同对象之间数据成员函数的共享问题。 1、静态成员函数是用关键词static声明的成员函数,它属于整个类而并不属于类的某个对象。 类的静态成员(变量和方法)属于类本身,在类加载的时候就会分配内存 ...

Thu Mar 29 02:21:00 CST 2018 0 2227
为什么静态成员函数不能是const(转)

static在c++中的第五种含义:用static修饰不访问静态数据成员的类成员函数。这意味着一个静态成员函数只能访问它的参数、类的静态数据成员和全局变量。 不能用const的原因: 这是C++的规则,const修饰符用于表示函数不能修改成员变量的值,该函数 ...

Tue Oct 25 07:11:00 CST 2016 0 1546
C++静态成员函数不能调用静态成员变量

其实我们从直观上可以很好的理解静态成员函数不能调用静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份。然而非静态成员变量和静态成员函数是针对类的对象而言。 然而从本质上来说类的静态成员函数函数形参中没有默认 ...

Tue Jul 28 02:00:00 CST 2015 0 2453
关于C++静态成员函数访问静态成员变量的问题

静态成员函数不能访问静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存。静态成员函数没有隐含的this自变量。所以,它就无法访问自己类的静态成员 代码如下: class ...

Sat Sep 03 09:33:00 CST 2016 0 3302
C++静态成员函数访问静态成员的几种方法

大家都知道C++中类的成员函数默认都提供了this指针,在静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C++灵活性下面,类还具备了静态成员静态函数,即 此时你的test函数只能去访问m_staticA成员,而不能去访问m_a ...

Wed Jan 21 19:23:00 CST 2015 4 39596
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM