其他分享
首页 > 其他分享> > c-对象b()有什么区别?和对象b ;?

c-对象b()有什么区别?和对象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()'

}

解决方法:

问题是学生jack();声明一个将Student作为返回类型的函数.它没有像您期望的那样声明该类的对象.

标签:c,class,instance-variables,default-constructor
来源: https://codeday.me/bug/20191014/1912669.html