it be allowed? If no, then why?
A static function is one, that is only available within in translation unit. The static of the function have nothing to with the static storage class. If you are using C++, then you have additionally static function within classes, which means for them to be accessible without an object of that class.
Questions like these which you can easily check by running it should be asked after you've tried it yourself. Make it a habit of testing things yourself first. Make your own conclusions and come here (with your the test code) to verify it, don't be lazy.
I did but I could not understand why non static members cant be used inside the static function
Share your code
See this class MyClass { static int a = 0; int b = 2; public: static int staticfn() { return a+b; } }; This code is wrong. Why? Because the static member function is not called through an instance. It's done this way instead: MyClass::staticfn(); but then if called this way, what is b? How can the function know about b if we aren't calling it through an instance?
Member variable is accessible when the class is initialized. A static function could be called without class initialization.
Обсуждают сегодня