我有一个包含以下内容的头文件
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;
}
为什么我的程序打印默认构造函数而不是 平均功能?
答案 0 :(得分:2)
为什么我的程序打印默认承包商而不是普通功能?
newpoint dag;
和newpoint ave;
会调用newpoint
的默认构造函数。
您在return
cout
之前写newpoint::average()
。因此,newpoint::average
答案 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)
默认构造函数根据定义应该在构造对象时调用,而不传递任何外部参数。您可以通过多种方式实现此目的。例如
newpoint point1
newpoint* newpoint_ptr = new newpoint;
newpoint point1{};
基本上,只要实例化类newpoint
的对象,就会调用构造函数。只有在您明确调用它时才会调用ave.average()
。