我正在编写一个需要使用复制构造函数的程序。由于我是使用复制构造函数的新手,所以我不知道我的声明和使用复制构造函数是否有效?

另外在这里我面临显示功能的问题,错误是::
error: prototype for 'int Student::display_student()' does not match any in class 'Student'。这是什么错误?

#include <string>
#include <iostream>

using namespace std;

class Student
{
    private:
        int rollno;
        string name;
    public:
        Student();
        Student(int x, string str);
        Student(Student &s);
        void display_student();
};

Student::Student()
 {
  rollno = 0 ;
  name = "" ;
 }

 Student::Student(int x, string str)
 {
  rollno=x ;
  name=str ;
 }

Student::Student(Student &s)
{
  rollno = s.rollno ;
  name = s.name;
}

Student::display_student()
{
    cout << "Student Name ::" << name << endl << "Student Roll No. ::" << rollno << endl;
}


int main()
{
 Student A;
 Student B(09,"Jhonny");
 Student C(B);
 A.display_student();
 B.display_student();
 C.display_student();
 return 0;
}

最佳答案

您没有在Student::display_student()的定义中指定返回值。尝试:

void Student::display_student()
{
    cout << "Student Name ::" << name << endl << "Student Roll No. ::" << rollno << endl;
}


编译器默认采用int Student::display_student()。类声明包含void display_student()的原型,但是您仅提供了功能int display_student()的定义。

09-10 03:55
查看更多