2016-05-02 2 views
0
#include<bits/stdc++.h> 
using namespace std; 

class A{ 
    int x; 

public: 
    A(){ 
     x=10; 
    } 

    void show(){ 
     cout<<x<<endl; 
    } 
}; 

main(){ 

    A a; 
    a.show(); 

} 

В main() функции, когда я об объявлении переменной a указанным выше способом, то код работает нормально, но если мы объявляем переменную A a() компилятор выдаст ошибку. Почему это так? Я думаю, что нет проблем с сопоставлением типов аргументов. Может ли кто-нибудь помочь?Конструктор и объявления переменных в Cpp

ответ

1

Потому что A a() не является объявлением переменной, а объявлением прототипа функции.

0

C++ 11 и выше исправить эту проблему с помощью универсальных инициализаторов. Вы объявляете функцию, которая возвращает A. Если вы используете {}, он будет работать:

A a{};