为什么我的程序打印默认构造函数?

时间:2016-02-26 06:47:16

标签: c++ constructor

我有一个包含以下内容的头文件

class newpoint
{

public:
    newpoint();

    newpoint(int num1, int num2);

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

和带有newpoint.h的a.cpp文件

#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;
}

为什么我的程序打印默认构造函数而不是 平均功能?

5 个答案:

答案 0 :(得分:2)

  

为什么我的程序打印默认承包商而不是普通功能?

  1. newpoint dag;newpoint ave;会调用newpoint的默认构造函数。

  2. 您在return cout之前写newpoint::average()。因此,newpoint::average

  3. 不打印任何内容

答案 1 :(得分:1)

执行默认约束器中的打印,因为您使用默认约束器创建了对象。

由于您在打印声明之前写了newpoint::average(),因此未执行return avg;中的打印。

答案 2 :(得分:1)

newpoint dag;newpoint ave;都将调用默认构造函数。

如果你想要使用你的双参数构造函数,那么写一下,例如,newpoint dag(1, 2);

ave.average(2,5); 确实致电average,但在return到达之前,您来自该功能的cout

答案 3 :(得分:0)

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

你在cout声明之前返回,所以你永远不会看到这种情况发生。默认构造函数将运行,因为您有行

newpoint dag;

答案 4 :(得分:0)

默认构造函数根据定义应该在构造对象时调用,而不传递任何外部参数。您可以通过多种方式实现此目的。例如

  1. newpoint point1
  2. newpoint* newpoint_ptr = new newpoint;
  3. newpoint point1{};
  4. 基本上,只要实例化类newpoint的对象,就会调用构造函数。只有在您明确调用它时才会调用ave.average()