2017-06-14 83 views
0

我想通過創建一個包含小時,分鐘和秒的Time類來了解類和它們的構造函數是如何工作的。我想通過使用默認構造函數打印一次,並通過用戶輸入打印一次。當我的程序編譯時,它並不要求用戶輸入,很可能是因爲我調用類函數getHour(如果我只打印輸入小時)。我也不確定如何通過默認構造函數打印時間(0,0,0)。遇到與類構造函數打印

任何幫助,將不勝感激!

主營:

#include <iostream> 
#include "Time.h" 

int main(){ 

    std::cout << "Enter the hour, minute, and second: " << std::endl; 
    int hour, minute, second; 
    std::cin >> hour >> minute >> second; 

    Time time1(hour, minute, second); 

    std::cout << time1.getHour() << std::endl; 

    return 0; 
} 

類實現:

#include <iostream> 
#include "Time.h" 

//default constructor 
Time::Time() { 
    hour = 0; 
    minute = 0; 
    second = 0; 
} 

//construct from hour, minute, second 
Time::Time(int theHour, int theMinute, int theSecond) { 
    hour = theHour; 
    minute = theMinute; 
    second = theSecond; 
} 

int Time::getHour() const { 
    return hour; 
} 

int Time::getMinute() const { 
    return minute; 
} 

int Time::getSecond() const { 
    return second; 
} 
+2

***它不要求用戶輸入,最有可能是因爲我調用類函數getHour(如果我只打印輸入小時)***您確定您正在運行當前代碼的構建?輸入在'main()'中,並且與'getHour()'無關' – drescherjm

回答

2

正常工作對我來說,這是我的輸出:

Enter the hour, minute, and second: 
2 
45 
32 
2 
Press any key to continue . . . 

確保正在重建的代碼並運行新的可執行文件。

在構造函數中,你可以這樣做:

Time::Time() { 
    hour = 0; 
    minute = 0; 
    second = 0; 

    std::cout << hour << " " << minute << " " << second << std::endl; 
} 

將其稱爲隨時調用時使用默認的構造函數:

std::cout << "Enter the hour, minute, and second: " << std::endl; 
    int hour, minute, second; 
    std::cin >> hour >> minute >> second; 

    Time t; //<--- this prints 0,0,0 
    Time time1(hour, minute, second); 

    std::cout << time1.getHour() << std::endl; 
    system("pause"); 
    return 0; 

將導致:

Enter the hour, minute, and second: 
11 
19 
59 
0 0 0 
11 
Press any key to continue . . . 
+0

謝謝,我現在明白了! – Mariankka

2

我也不清楚如何通過默認的構造函數打印時間(0,0,0)。

除非我失去了一些東西微妙,

// Construct a Time object using the default constructor. 
Time time2; 

// Print it's hour 
std::cout << time2.getHour() << std::endl; 
+0

我想問題是這個+運行一箇舊的可執行文件。 – drescherjm

+0

編譯時,它仍然不會打印任何內容。 – Mariankka

+2

@Mariankka,你的編程環境是什麼?你如何運行該程序? –

0

您共享的代碼不會嘗試打印自以來使用默認構造函數構造的對象由time1調用。正在做你告訴它做的事。如果從time1要充分時間,你就必須調用所有的干將例如:std::cout << time1.getHour() << " : " << time1.getMinute() << " : " << time1.getSecond() << std::endl

0

「我也不清楚如何通過默認的構造函數打印時間(0,0,0)。 「

考慮displayTime()方法,可以叫上顯示任何實例

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    std::cout << "Enter the hour, minute, and second: " << std::endl; 
    int hour, minute, second; 
    std::cin >> hour >> minute >> second; 

    Time time1(hour, minute, second);   // overloaded constructor 
    Time time2;        // default constructor 

// std::cout << time1.getHour() << std::endl; 
// std::cout << time2.getHour() << std::endl; 

    time1.displayTime(); 
    time2.displayTime(); 

    getch(); 
    return 0; 
} 

添加displayTime的時間()方法

void Time::displayTime() const{ 
std::cout << this->hour << "," 
      << this->minute << "," 
      << this->second << std::endl; 
} 
+0

@drescherjm感謝您的編輯。 – dmaelect