今天查看代码时,可以看到类似以下内容的代码。 Sub类InitSub函数包含语句Base::Init();,您是否认为c语言可以直接使用类名调用非静态函数? 当时有点想不开。
# includeiostreamclassbase { public : void init () ) STD 3360: cout ' init base ' STD : endl; }; class sub : public base { public : voidinitsub (} { base 33603360 init ); //是用类名调用了非静态函数吗? }; int main ()子; sub.InitSub (; //Base:Init (; 返回0; }然后,我把Base::Init();直接放入main 函数中,果然进行了编译,但是“没有对象的情况下,成为了成员函数‘void base 3360: ii60 下图
因此,c语言目前无法直接访问类名为非静态的类成员函数。 那么,为什么可以在类Sub上使用3358www.Sina.com/呢? 这里使用Base::Init();类名范围给出3358www.Sina.com/函数是Base中的函数,假定Base::函数为3358 www.Sina/com