C ++对象声明和初始化,奇怪的语法?

时间:2016-05-25 18:19:02

标签: c++

#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();。我无法在网上找到任何相关信息。还有其他人看过这个可以解释的语法吗?这叫什么?

0 个答案:

没有答案