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

Why my program is printing the default constructor?

本文关键字:默认 构造函数 打印 程序 我的 为什么      更新时间:2023-10-16

我有一个头文件,其中包含以下内容

class newpoint
{
public:
    newpoint();
    newpoint(int num1, int num2);
    double average(int num11, int num22);
}; 

和 .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 文件作为标头并计算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;
}

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

为什么我的程序打印默认承包商而不是平均函数?

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

  2. 你在cout之前写return newpoint::average().所以不会从newpoint::average打印出任何东西.

在默认承包器中执行打印是因为您使用缺省承包器创建了对象。

不会执行newpoint::average()中的打印,因为您在打印语句之前编写了return avg;

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

如果您希望使用双参数构造函数,请编写例如newpoint dag(1, 2);

ave.average(2,5);确实调用了average,但您在到达cout之前return该函数。

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

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

newpoint dag;

根据定义,默认构造函数应该在构造对象时调用,而没有任何外部参数传递给它。 您可以通过许多不同的方式执行此操作。 例如

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

基本上,每当您实例化类 newpoint 的对象时都会调用构造函数。 仅当您显式调用ave.average()时,才会调用它。