В чем разница между объектом b (); и объект б;?

Чтобы быть более точным, я получаю ошибку времени компиляции, когда пытаюсь получить доступ к переменной экземпляра, когда создаю объект с помощью (), но когда я этого не делаю, код компилируется и запускается, как и ожидалось. Кроме того, эта проблема относится только к конструктору по умолчанию. Я хотел бы понять почему.

using namespace std;
#include <iostream>

class Student {

  public:

    int gpa;

    Student() { 
      gpa = 4;
    }

    Student( int x ) { 
      gpa = x; 
    }

};

int main() {

  Student zero;
  Student sally( 2 ); 
  Student jack();

  cout << zero.gpa << endl; //prints 4
  cout << sally.gpa << endl; // prints 2
  cout << jack.gpa << endl; //error: request for member 'gpa' in 'jack', which is of non-class type 'Student()'

}

Ответы на вопрос(5)

Ваш ответ на вопрос