Mike 發問時間: 電腦與網際網路程式設計 · 1 0 年前

construstors 和 operator 的問題

//prob5.h

#ifndef PERSON_H

#define PERSON_H

#include <iostream>

using namespace std;

class Person

{

public:

Person();

/* the copy constructor declaration */

Person(const Person& );

/* the assignment operator overloading declaration*/

Person& operator=(const Person& );

void setName(string);

void setAge(int);

void printinfo();

private:

string name;

int age;

};

#endif

=========================================

//prob5_main.cpp

#include \"prob5.cpp\"

int main() {

/* please DO NOT make any changes in this file */

Person p1;

p1.setName(\"Peter\");

p1.setAge(50);

Person p2;

p2.setName(\"Lisa\");

p2.setAge(40);

Person p3(p1);

Person p5;

p5 = p1;

Person p4 = p2;

Person p6;

p6 = p2;

p1.printinfo();

p3.printinfo();

p5.printinfo();

p2.printinfo();

p4.printinfo();

p6.printinfo();

}

==========================

//prob5.cpp

#include \"prob5.h\"

Person::Person(const Person& p) {

/* copy constructor: for you to complete 這邊要寫*/

}

Person& Person::operator=(const Person& p) {

/* assignment operator overloading: for you to complete 這邊要寫*/

}

void Person::setName(string n) { name = n;}

void Person::setAge(int a) { age = a;}

void Person::printinfo(){

cout <<\"Name: \" << name << \"\\t\\tAge: \" << age <<endl;

}

我想讓這個程式顯示出像下列一樣

Name: Peter Age: 50

Name: Peter Age: 52

Name: Peter Age: 48

Name: Lisa Age: 40

Name: Lisa Age: 42

Name: Lisa Age: 38

請各位幫幫忙吧@@

已更新項目:

為什麼我用DEV-C++編譯後有一堆 linker error呢??

是我編譯方法不對嗎? 教教我吧!!謝謝囉!

1 個解答

評分
  • JM.C
    Lv 4
    1 0 年前
    最佳解答

    #ifndef PERSON_H

    #define PERSON_H

    #include <iostream>

    using namespace std;

    class Person

    {

    public :

    Person() ;

    Person(const Person&) ;

    Person& operator =(const Person&) ;

    void setName(string) ;

    void setAge(int) ;

    void printinfo() ;

    private:

    string name ;

    int age ;

    } ;

    ****************************************

    #include "prob5.h"

    int main()

    {

    Person p1 ;

    p1.setName("Peter") ;

    p1.setAge(50) ;

    Person p2 ;

    p2.setName("Lisa") ;

    p2.setAge(40) ;

    Person p3(p1) ;

    Person p5 ;

    p5 = p1 ;

    Person p4 = p2 ;

    Person p6 ;

    p6 = p2 ;

    p1.printinfo() ;

    p3.printinfo() ;

    p5.printinfo() ;

    p2.printinfo() ;

    p4.printinfo() ;

    p6.printinfo() ;

    system("pause") ;

    return 0 ;

    }

    ****************************************

    #include "prob5.h"

    Person::Person() {}

    Person::Person(const Person& p)

    {

    name = p.name ;

    age = p.age + 2 ;

    }

    Person& Person::operator=(const Person& p)

    {

    name = p.name ;

    age = p.age - 2 ;

    }

    void Person::setName(string n) { name = n ; }

    void Person::setAge(int a) { age = a ; }

    void Person::printinfo() {

    cout <<"Name: " << name << "\t\tAge: " << age <<endl;

    }

    2006-08-29 23:44:44 補充:

    你主程式include的標頭檔不對..不是#include "prob5.cpp"應該是#include "prob5.h"才對吧..

    參考資料: Myself
還有問題?馬上發問,尋求解答。