C++中静态成员函数和非静态成员函数的区别

如题所述

第1个回答  2019-10-15
静态函数只有当程序结束的时候才从内存消失。而非静态则是动态加载到内存,不需要的时候就从内存消失。
据个例子,调用类中的静态函数,你不需要创建对象就可以调用。而对于非静态的函数,你必须要先创建对象,才能够由对象调用。
Class::func()
//对于静态函数不创建对象,可以这样调用,而非静态必须创建对象。
第2个回答  2019-07-28
静态成员函数只有一份拷贝,而普通成员函数在每个类对象中都有一份拷贝。
静态成员函数相当于在其所属类的名字空间内定义的全局函数,可以直接通过
类型访问。而普通成员函数必须通过对象访问。

C++中静态成员函数和非静态成员函数的区别
静态函数只有当程序结束的时候才从内存消失。而非静态则是动态加载到内存,不需要的时候就从内存消失。据个例子,调用类中的静态函数,你不需要创建对象就可以调用。而对于非静态的函数,你必须要先创建对象,才能够由对象调用。Class::func()\/\/对于静态函数不创建对象,可以这样调用,而非静态必须创建...

c++静态类和非静态类的区别
作用域不同,内存分配不同。1、作用域不同:c加加静态类的成员变量和成员函数的作用域是整个程序中可见的,而非静态类的成员变量和成员函数的作用域是类的内部。2、内存分配:c加加静态类的成员变量和成员函数在程序开始运行时就被分配了内存,而非静态类的成员变量和成员函数则是在对象创建时才分配...

关于C++静态成员函数和非静态成员函数的区别
它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。例如:class Sc { public: void nsfn(int a); \/\/像声明Sc::nsfn(Sc *this , int a); static void sfn(int a); \/\/ 无this指针 \/\/... }; void f(Sc &s) { s.nsfn...

c++中静态成员和静态方法是什么意思?简要举例说明用处。
在C++中,静态成员指的是属于类的成员,而非单个对象的专属。它与类的全体对象共享同一份副本,无论创建了多少个该类的对象。静态成员包括静态数据成员与静态成员函数。静态数据成员是属于类的,由类的所有对象共享。与普通数据成员不同,静态数据成员在内存中只有一个副本。这意味着,所有对象引用同一副本...

C++静态成员函数,怎么就访问私有变量了...
C++会区分两种类型的成员函数:静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的this自变量。所以,它就无法访问自己类的非静态成员。左例中分别声明了成员函数void add(),成员变量int a,和静态成员函数 static void staticfunc(),静态成员变量 static int sa.在...

C++ 中static 和final的区别是什么
1、在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在类加载的时候被创建并初始化(只被创建初始化一次),对于该类的所有对象来说,staitic成员变量只有一份。2、用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非静态的...

C++ static静态成员函数详解
C++中的static静态成员函数提供了一种独特的功能,与普通成员函数有显著的区别。静态成员函数的关键特性在于它不依赖于对象实例,无需通过对象调用,且只能访问静态成员,如静态成员变量和静态成员函数。与普通成员函数的this指针不同,静态成员函数在编译时并不需要额外的this参数,这使得它们可以在对象创建...

c++中什么是静态数据成员 什么是静态成员函数 分别有什么作用?
静态数据成员在内存只有一个,而且可以通过类来引用。这是静态数据成员属于类,很明显的。这是实现不同对象间数据共享的一种方法。静态成员函数,与静态数据成员类似。就不说,需要注意的是,它在内存里始终只有一个副本(普通成员函数也一样)。关于静态成员的生命周期,在此就不多说了。

11月18日——学习C\/C++中的静态,这篇就够了
静态数据成员是类所有对象共享的数据,可以全局访问,也可以通过对象。它们的初始化必须在类内完成。静态数据成员与非静态的不同在于,它们可以作为函数默认参数,并且在const函数中可被修改。静态成员函数则是执行通用操作的工具,无需实例化对象即可使用,但不能访问非静态成员。静态绑定与动态绑定是面向对象...

C++中,什么情况将函数定义成静态成员函数?
静态成员函数是该类的所有对象共有的函数,存储在静态区区,调用时类名::静态函数名即可,例MyClass::MyStaticFuc()。普通函数是属于每一个对象的,如果是new的对象存储在堆中,其它的则在栈中。

相似回答