C++,为什么一个静态函数A,无法调用非静态函数B 如 :class Demo{public:\x09 static void A();\x09 void B();};void Demo::A(){\x09 B(); //
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 07:51:12
![C++,为什么一个静态函数A,无法调用非静态函数B 如 :class Demo{public:\x09 static void A();\x09 void B();};void Demo::A(){\x09 B(); //](/uploads/image/z/9858140-44-0.jpg?t=C%2B%2B%2C%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%80%E4%B8%AA%E9%9D%99%E6%80%81%E5%87%BD%E6%95%B0A%2C%E6%97%A0%E6%B3%95%E8%B0%83%E7%94%A8%E9%9D%9E%E9%9D%99%E6%80%81%E5%87%BD%E6%95%B0B+%E5%A6%82+%EF%BC%9Aclass+Demo%7Bpublic%3A%5Cx09+static+void+A%28%29%3B%5Cx09+void+B%28%29%3B%7D%3Bvoid+Demo%3A%3AA%28%29%7B%5Cx09+B%28%29%3B+%2F%2F)
C++,为什么一个静态函数A,无法调用非静态函数B 如 :class Demo{public:\x09 static void A();\x09 void B();};void Demo::A(){\x09 B(); //
C++,为什么一个静态函数A,无法调用非静态函数B
如 :
class Demo
{
public:
\x09 static void A();
\x09 void B();
};
void Demo::A()
{
\x09 B(); //
C++,为什么一个静态函数A,无法调用非静态函数B 如 :class Demo{public:\x09 static void A();\x09 void B();};void Demo::A(){\x09 B(); //
/*这叫做类的静态函数.什么是类的静态成员函数呢,就是属于类本身的函数,在类加载的时候,就为它们分配了空间,所以可以用类名::函数名的方式来调用静态函数.*/
Demo::A();
/*但是类的普通函数就不同了.你回想一下平时调用类的普通函数是怎么用的.你首先得创建类的实例,也就是先创建一个对象.*/
Demo demo;
//然后才能调用类的普通函数.
demo.B();
/*这是因为类的普通函数是在对象被创建的时候才为它分配空间的.所以你上面为什么会出错呢.你在静态函数里面调用了类的普通函数,你这时候创建了类的对象了吗?很显然没有.因为你没有实例化,所以这时候系统还没有为它分配空间.所以就造成了出错.*/