自从我编写任何C ++以来已经有一段时间了,所以当查找一些基本示例以使我入门时,我很惊讶地看到这样的东西:
#include <iostream>
class TestClass {
public:
void testMethod(){
std::cout << "Hello!";
}
};
int main()
{
TestClass test; // Not being instantiated
test.testMethod(); // Method still able to be called successfully!
}
如何在不首先创建类实例的情况下调用类的非静态方法?
工作示例:http://cpp.sh/3wdhg
答案 0 :(得分:2)
TestClass test;
是用于声明类型TestClass
的变量的语法。变量是类型的实例。在这种情况下,它是TestClass
的实例。
为什么非静态类方法可以调用...
因为您创建了一个实例。
...没有先创建类的实例?
您的前提是错误的。
答案 1 :(得分:1)
问题是,实际上正在被实例化。 test
是TestClass
的实例。因此,test.testMethod()
在类的实例上调用非静态方法。