自动变量一般会随着函数的退出而释放空间,静态数据(即使是函数内部的静态局部变量)也存放在全局数据区。全局数据区的数据并不会因为函数的退出而释放空间。 看下面的例子: 代码语言:javascript 复制 //example:#include<stdio.h>#include<stdlib.h>int k1=1;int k2;staticint k3=2;staticint k4;intmain(){stat...
一个类不同的对象实例的静态变量是同一个变量,所以静态成员函数的调用可以全局调用,而无须指明是对哪一个对象操作。 静态成员(类中用static声明)用类名::成员名的方式访问,非静态成员必须通过定义的类对象来访问。
上面注释可见:对GetSum()加上static,使它变成一个静态成员函数,可以用类名::函数名进行访问。 那么静态成员函数有特点呢? 1.静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数; 2.非静态成员函数可以任意地访问静态成员函数和静态数据成员; 3.静态成员函数不能访问非静态成员函数和非静态...
14、关于静态成员的说法,错误的是( )A、静态成员函数可以通过类名或对象名来调用 B、静态数据成员可以通过类名或对象名来调用C、非静态成员函数不可以通过类名来调用 D、非静态的数
结论1:不能通过类名来调用类的非静态成员函数。 通过类的对象调用静态成员函数和非静态成员函数。 classPoint{public:voidinit(){}staticvoidoutput(){}};voidmain(){Pointpt;pt.init();pt.output();} 编译通过。 结论2:类的对象可以使用静态成员函数和非静态成员函数。
结论1:不能通过类名来调用类的非静态成员函数。 通过类的对象调用静态成员函数和非静态成员函数。 classPoint{public:voidinit(){}staticvoidoutput(){}};voidmain(){Pointpt;pt.init();pt.output();} 编译通过。 结论2:类的对象可以使用静态成员函数和非静态成员函数。
(4)静态数据成员既可以通过对象名引用,也可以通过类名引用。 静态成员函数: (1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。 (2)非静态成员函数有this指针,而静态成员函数没有this指针。 (3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。
(1)类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致了它仅能访问类的静态数据和静态成员函数。 error: Semantic Issue: 'virtual' can only appear on non-static member functions,大家懂了吧! ) (3)由于静态成员声明于类中,操作于其外,所以对其取地址操作,就多少有些特殊,变量地址...
14、关于静态成员的说法,错误的是( )A、静态成员函数可以通过类名或对象名来调用 B、静态数据成员可以通过类名或对象名来调用C、非静态成员函数不可以通过类名来调用 D、非静态的数
static成员函数: 静态成员函数和静态数据成员一样,它们都属于类的静态成员,都不是任何对象的成员。 因此,对静态成员的引用不需要用对象名。 静态成员函数仅能访问静态的数据成员,不能访问非静态的数据成员,也不能访问非静态的成员函数,这是由于静态的成员函数没有this指针。 参考: c/c++ static 用法总结(三版本合...