我有一个头文件,其中包含以下内容
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;
}
为什么我的程序打印默认构造函数而不是平均功能?
为什么我的程序打印默认承包商而不是平均函数?
-
newpoint dag;
和newpoint ave;
将调用newpoint
的默认构造函数。 -
你在
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;
根据定义,默认构造函数应该在构造对象时调用,而没有任何外部参数传递给它。 您可以通过许多不同的方式执行此操作。 例如
-
newpoint point1
-
newpoint* newpoint_ptr = new newpoint;
-
newpoint point1{};
基本上,每当您实例化类 newpoint
的对象时都会调用构造函数。 仅当您显式调用ave.average()
时,才会调用它。