为什么我可以在尚未实例化的类上调用函数

Why can I call a function on a Class that has not been instantiated?

本文关键字:调用 函数 实例化 我可以 为什么      更新时间:2023-10-16

有人能解释一下为什么下面的代码能够调用SayHello函数并打印出"Hello"吗。

构造函数和析构函数永远不会被调用,因为实际上没有创建对象,那么为什么我可以调用SayHello函数呢??

class A
{
public:
    A()
    {
        std::cout<<"In Constructor"<<std::endl;
    };
    ~A()
    {
        std::cout<<"In Destructor"<<std::endl;
    };
    void SayHello()
    {
        std::cout<<"Hello"<<std::endl;
    }
};
int _tmain(int argc, _TCHAR* argv[])
{       
    A* a = nullptr;
    a->SayHello();
    return 0;
}

这是未定义的行为。它恰好工作,因为SayHello不访问任何成员数据。不要这样做。