c++使用第二个构造函数

c++ Using a second constructor

本文关键字:构造函数 第二个 c++      更新时间:2023-10-16

嗨,伙计们,我正试图做我的家庭作业,我被一些构造器卡住了。我应该这样做:

    编写一个程序,使用一个名为MovieData的类来存储关于电影的下列信息:
  • 片名、导演、发行年份、片长(分钟)。
  • 包含一个允许所有这四个成员数据的构造函数在创建MovieData变量时指定的值。
  • 程序应该创建两个MovieData变量。
  • 提供一种方法,以一种格式清晰的方式显示有关电影的信息。
  • 现在包括两个额外的属性,保持电影的制作成本和第一年的收入。
  • 添加第二个构造函数,以便所有六个成员值都可以在创建MovieData变量时指定。
  • 复制显示电影数据的方法,以创建第二个显示标题、导演、发行年份、运行时间和第一年利润或亏损的方法。

到目前为止,我已经完成了:

// ch7movie
// By Kevin Mok
#include <iostream>
#include <string>
using namespace std;
class MovieData
{
    public:
        string title;
        string director;
        int yearReleased;
        int runningTime;
        double productionCost;
        double firstYearRevenue;
        MovieData(string titl, string dir, int yr, int rT, double pC, double fyR); // constructor
};
//Defining constructor
MovieData::MovieData(string titl, string dir, int yr, int rT, double pC, double fyR)
{
    title = titl;
    director = dir;
    yearReleased = yr;
    runningTime = rT;
    productionCost = pC;
    firstYearRevenue = fyR;
}
//Function of movie info
void displayMovieInfo(MovieData movieName)
{
    cout << "----------------------------" << endl;
    cout << "Title: " << movieName.title << endl;
    cout << "Director: " << movieName.director << endl;
    cout << "Year Released: " << movieName.yearReleased << endl;
    cout << "Running Time: " << movieName.runningTime << " minutes" << endl;
    cout << "Production Cost: $" << movieName.productionCost << endl;
    cout << "First Year's Profit': $" << movieName.firstYearRevenue - movieName.productionCost << endl;
    cout << "----------------------------n" << endl;
}
int main()
{
    MovieData movie1("C++ in English", "JohnCna", 2010, 120, 36500, 50000);
    MovieData movie2("Great Programmer", "RKO", 2013, 130, 36500, 100000);
    displayMovieInfo(movie1);
    displayMovieInfo(movie2);
    return 0;
}

我知道我没有第二个构造函数,这是我的问题。我不知道如何申报;我一直在读我的书,但我有很多麻烦,因为它没有说任何关于它。如果你能给我一些指导就太好了

您已经有了一个构造函数。只需对另一个构造函数执行完全相同的操作,只是使用不同的参数,如需求中所说的to。

您需要将您的displayMovieInfo()独立函数更改为类的方法,如要求所述。

试试这个:

// ch7movie
// By Kevin Mok
#include <iostream>
#include <iomanip> 
#include <string>
using namespace std;
class MovieData
{    
public:
    string title;
    string director;
    int yearReleased;
    int runningTime;
    double productionCost;
    double firstYearRevenue;
    // constructors
    MovieData(string titl, string dir, int yr, int rT);
    MovieData(string titl, string dir, int yr, int rT, double pC, double fyR);
    void displayMovieInfo();
    void displayMovieInfoAndCosts();
};
//Defining constructors
MovieData::MovieData(string titl, string dir, int yr, int rT)
{
    title = titl;
    director = dir;
    yearReleased = yr;
    runningTime = rT;
    productionCost = 0.0;
    firstYearRevenue = 0.0;
}
MovieData::MovieData(string titl, string dir, int yr, int rT, double pC, double fyR)
{
    title = titl;
    director = dir;
    yearReleased = yr;
    runningTime = rT;
    productionCost = pC;
    firstYearRevenue = fyR;
}
//Methods to display movie info
void MovieData::displayMovieInfo()
{
    cout << "----------------------------" << endl;
    cout << "Title: " << title << endl;
    cout << "Director: " << director << endl;
    cout << "Year Released: " << yearReleased << endl;
    cout << "Running Time: " << runningTime << " minutes" << endl;
    cout << "----------------------------n" << endl;
}
void MovieData::displayMovieInfoAndCosts()
{
    cout << "----------------------------" << endl;
    cout << "Title: " << title << endl;
    cout << "Director: " << director << endl;
    cout << "Year Released: " << yearReleased << endl;
    cout << "Running Time: " << runningTime << " minutes" << endl;
    cout << "Production Cost: $" << setprecision(2) << productionCost << endl;
    cout << "First Year's Profit': $" << setprecision(2) << firstYearRevenue - productionCost << endl;
    cout << "----------------------------n" << endl;
}
int main()
{
    MovieData movie1("C++ in English", "JohnCna", 2010, 120, 36500, 50000);
    MovieData movie2("Great Programmer", "RKO", 2013, 130, 36500, 100000);
    movie1.displayMovieInfo();
    movie1.displayMovieInfoAndCosts();
    movie2.displayMovieInfo();
    movie2.displayMovieInfoAndCosts();
    return 0;    
}