如果需要从静态函数中调用非静态函数,可以通过创建一个类的实例,然后通过该实例来调用非静态函数。例如: 代码语言:cpp 复制 classMyClass{public:voidnonStaticFunction(){// do something}staticvoidstaticFunction(){MyClass myObject;myObject.nonStaticFunction();}}; 在上面的例子中,nonStaticFunction()是一...
(1)静态成员函数中不能调用非静态成员。 (2)非静态成员函数中可以调用静态成员。因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的。 (3)静态成员变量使用前必须先初始化(如int MyClass::m_nNumber = 0;),否则会在linker时出错。 一般总结:在类中,static可...
5.在静态方法中通过指向该对象的指针调用非静态方法。static_method(&obj);通过这种方法,可以在静态方法...
而静态成员函数调用的成员变量值都必须是静态的,等同全局的变量。一个类不同的对象实例的静态变量是同一个变量,所以静态成员函数的调用可以全局调用,而无须指明是对哪一个对象操作。 静态成员(类中用static声明)用类名::成员名的方式访问,非静态成员必须通过定义的类对象来访问。
};int A::ac=1; //类外定义且初始化,//类的静态成员变量需要在类外分配内存空间intA::dc=1;intA::stval(){// nn=10; 静态成员函数不能调用非静态成员dc=20;returndc; }intA::val() { dc=ac; //成员函数直接访问returndc; }intmain() ...
结论1:不能通过类名来调用类的非静态成员函数。 通过类的对象调用静态成员函数和非静态成员函数。 classPoint{public:voidinit(){}staticvoidoutput(){}};voidmain(){Pointpt;pt.init();pt.output();} 编译通过。 结论2:类的对象可以使用静态成员函数和非静态成员函数。
通过类名调用静态成员函数和非静态成员函数: classPoint{public:voidinit(){}staticvoidoutput(){}};voidmain(){Point::init();Point::output();} 报错: 'Point::init':illegal call of non-staticmemberfunction 结论1:不能通过类名来调用类的非静态成员函数。
如函数fn()实际上是this->fn()。 与普通函数相比,静态成员函数属于类本身,而不作用于对象,因此它不具有this指针。正因为它没有指向某一个对象,所以它无法访问属于类对象的非静态成员变量和非静态成员函数,它只能调用其余的静态成员函数和静态成员变量。从另一个角度来看,由于静态成员函数和静态成员变量在类实例化...
静态成员函数可以作为工具类函数,用于执行一些通用的操作,如字符串处理、数学计算等,不需要实例化对象即可使用。静态成员函数内不能访问非静态成员。 #include<iostream>#include<string>usingnamespacestd;classPoint{public:staticdoubleoutput(){//printf("%d\n",m_x); //静态成员函数中不能直接使用非静态的数据...
答案解析 查看更多优质解析 解答一 举报 错误的是B静态成员函数(注意不是静态数据成员)可以通过类名或对象名来调用,而非静态成员函数只能通过对象名来调用访问非静态数据成员必须通过参数传递的方式得到对象名,然后通过对象名来访问 解析看不懂?免费查看同类题视频解析查看解答 ...