#include <iostream>
class SomeClass {
public:
SomeClass(): something(100) {
std::cout<<"constructing"<<std::endl;
}
~SomeClass() {
std::cout<<"destructing"<<std::endl;
}
void printSomething() {
std::cout<<something<<std::endl;
}
int something;
};
int main(int argc, char * argv[]) {
SomeClass(instSomeClass);
instSomeClass.printSomething();
return 0;
}
在前几天滚动浏览某些代码的过程中,我偶然发现了一些我以前从未见过但并不完全理解的东西。上面编译和运行的例子是类似的,似乎使用我认为不合法的符号来声明和初始化一个对象:SomeClass(instSomeClass);
我期望一个未声明的&#39; instSomeClass未声明的&#39;错误或类似的东西。
这是怎么回事?我假设编译器将其解释为:SomeClass instSomeClass;
或SomeClass instSomeClass = SomeClass();
。我无法在网上找到任何相关信息。还有其他人看过这个可以解释的语法吗?这叫什么?