C++定义类的对象的数组为什么不对(主函数刚开始的地方)还有主函数中调用构造函数也错了,为什么

#include <iostream>
#include <fstream>
using namespace std;
class Student
{
public:
    Student(int num,char sex,int score)
    {
        this->num=num;
        this->sex=sex;
        this->score=score;
    }
protected:
    int num;
    char sex;
    int score;
};
int main()
{
    Student stu[3];//此处错误 
    for(int i=0;i<3;i++)
    {
        int num;
        char sex;
        int score;
        cin>>num>>sex>>score;
        stu[i](num,sex,score);//此处错误 
    }
    ofstream outfile("stu.data",ios::binary);
    if(!outfile)
    {
        cerr<<"open error!"<<endl;
//        abort();
    }
    for(int i=0;i<3;i++)
    {
        outfile.write((char*)&stu[i],sizeof(stu[i]));
    }
    outfile.close();
    return 0;
}
#include <iostream>
#include <fstream>
using namespace std;
class Student
{
public:
    Student() {}
    Student(int num,char sex,int score)
    {
        this->num=num;
        this->sex=sex;
        this->score=score;
    }
protected:
    int num;
    char sex;
    int score;
};
int main()
{
    Student stu[3];//此处错误 
    for(int i=0;i<3;i++)
    {
        int num;
        char sex;
        int score;
        cin>>num>>sex>>score;
        stu[i] = Student(num,sex,score);//此处错误 
    }
    ofstream outfile("stu.data",ios::binary);
    if(!outfile)
    {
        cerr<<"open error!"<<endl;
//        abort();
    }
    for(int i=0;i<3;i++)
    {
        outfile.write((char*)&stu[i],sizeof(stu[i]));
    }
    outfile.close();
    return 0;
}

问题解决的话,请点下采纳

你好,你这里你未区分什么时候调用默认构造器,还有什么时候调用拷贝构造器,Student stu[3]会调用默认构造器,stui是调用拷贝构造器。
所以一楼的代码就改成了这样,我完全赞同他写这样写代码