2016-02-26 157 views
0

我有一個包含以下爲什麼我的程序打印默認構造函數?

class newpoint 
{ 

public: 
    newpoint(); 

    newpoint(int num1, int num2); 

    double average(int num11, int num22); 
}; 

和a.cpp文件與newpoint.h

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

using namespace std; 

newpoint::newpoint() 
{ 
    cout << "This is the default constructor talking " << endl; 
} 

newpoint::newpoint(int number1, int number2){ 

    int sum = number1 + number2; 
    cout << sum << endl; 
} 

double newpoint::average(int number11, int number12){ 
    double avg = (number11 + number12)/2; 
    return avg; 
    cout << "the average is" << avg << endl; 
} 

和具有.h文件作爲頭,並計算出SOURSE文件頭文件從newpoint.cpp文件,稱他們如下

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

using namespace std; 

int main(){ 
    int num4, num5; 
    newpoint dag; 

    //newpoint dag2(2,3); 

    //cout << "enter a number " << endl; 
    //cin >> num4; 
    //cin >> num5; 

    newpoint ave; 
    ave.average(2,5); 

    return 0; 
} 

爲什麼我的程序打印默認構造函數研究所的 功能ead的平均功能是 ?

+1

你覺得'newpoint dag;'是做什麼的? –

+0

構造函數在創建對象時運行,並且在顯示值之前從函數返回。 –

+0

我知道它會打印默認承包商,但是dag.average呢? –

回答

2

爲什麼我的程序默認的打印承包商而不是平均的功能?

  1. newpoint dag;newpoint ave;將調用newpoint默認構造函數。

  2. 您在cout之前newpoint::average()之前寫return。所以沒有什麼會從newpoint::average打印出來。

1

由於使用默認約束器創建對象,因此默認約束器中的打印被執行。

不執行newpoint::average()印刷,因爲你的打印語句之前寫return avg;

1

兩個newpoint dag;newpoint ave;將調用默認的構造函數。

如果你想使用你的兩個參數的構造函數,然後寫,例如,newpoint dag(1, 2);

ave.average(2,5);確實呼叫average,但你從達到cout之前功能return

0
double newpoint::average(int number11, int number12){ 
    double avg = (number11 + number12)/2; 
    return avg; 
    cout << "the average is" << avg << endl; 
} 

你在你的cout語句之前返回,所以你永遠不會看到發生這種情況。默認構造函數將運行,因爲你有行

newpoint dag; 
0

默認構造函數的定義應該在構造一個對象而傳遞給它的任何外部參數來調用。你可以用許多不同的方式來做到這一點。例如

  1. newpoint point1
  2. newpoint* newpoint_ptr = new newpoint;
  3. newpoint point1{};

基本上只要你實例newpoint類的對象調用構造函數。只有在您明確調用它時纔會調用ave.average()

相關問題