21xrx.com
2024-12-27 15:36:45 Friday
登录
文章检索 我的文章 写文章
C++类中静态函数和非静态函数的差异
2023-07-04 15:27:43 深夜i     --     --
C++ 静态函数 非静态函数 差异

在C++类中,我们经常会听到静态函数和非静态函数这两个概念,它们都可以定义在类中,并且都可以被调用。但是它们之间是有差异的。

首先,静态函数是属于整个类的,而非静态函数是属于类的某个实例的。可以理解为,静态函数是没有this指针的,不能访问某个具体对象的成员变量,而非静态函数是有this指针,可以访问对象的成员变量。因此,静态函数是一种更纯粹的行为,不依赖于类中的任何变量,只处理传递给它的参数。

其次,静态函数可以被所有属于该类的实例共享,而非静态函数必须通过对象来调用。比如我们有一个类A,它有一个静态函数和一个非静态函数,当我们需要调用A的静态函数时,可以直接以类名为前缀调用该函数,比如A::static_fn(),而调用A的非静态函数需要先创建一个A的实例,再以该实例为前缀调用该函数,比如A a; a.non_static_fn()。

最后,静态函数可以访问类的私有成员,因为它们没有this指针,不需要访问对象的成员变量而是访问类的静态成员。而非静态函数则不能访问类的私有成员,因为它们需要通过对象的指针才能访问类的成员变量。

总之,静态函数和非静态函数在C++类中的使用场景和意义是不一样的,需要根据具体情况来选择使用哪种函数。如果需要处理的逻辑独立于对象,而又需要访问类的静态成员,那么就应该使用静态函数,反之,则应该使用非静态函数。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复