急急急!两道道C++题 高分 一小时内给出正确答案 追加高分!!!

1.定义Boat与Car两个类,两者都有weight属性,定义二者的一个友元函数getTotalWeight(),计算二者的重量和。
2.编译和连接这两个步骤的输入输出分别是什么类型的文件?两个步骤的任务有什么不同?在以下几种情况下,在对程序进行编译、连接时是否会报错?会在哪个步骤报错?
(1.)定义一个函数void f(int x, int y),以f(1)的形式调用。
(2) 在源文件的起始处声明了一个函数void f(int x),但未给出其含义,以f(1)的形式调用。
(3)在源文件起始处声明了一个函数void f(int x),但未给出其定义,也未对其进行调用。
(4) 在源文件a.cpp中定义了一个函数void f(int x),在源文件b.cpp中定义了一个函数void f(int x),试图将两源文件编译后连接在一起。

请教详细答案 定有高分追加!!!

/**
1.定义Boat与Car两个类,两者都有weight属性,
定义二者的一个友元函数getTotalWeight(),计算二者的重量和。
*/
#include <iostream>

using std::cin;
using std::cout;
using std::endl;

class Car;

class Boat {
public:
Boat(double w = 0): weight(w) { }
friend double getTotalWeight(const Boat &, const Car &);

private:
double weight;
};

class Car {
public:
Car(double w = 0): weight(w) { }
friend double getTotalWeight(const Boat &, const Car &);

private:
double weight;
};

double getTotalWeight(const Boat &lhs, const Car &rhs) {
return lhs.weight + rhs.weight;
}

int main() {
double weight;
cout << "Enter a boat's weight: ";
cin >> weight;
Boat aboat(weight);
cout << "Enter a car's weight: ";
cin >> weight;
Car acar(weight);

cout << "Total weight: " << getTotalWeight(aboat, acar) << endl;
return 0;
}

/**
2.编译和连接这两个步骤的输入输出分别是什么类型的文件?两个步骤的任务有什么不同?

答:编译产生.obj的文件,是包含程序的机器码,连接产生.exe的文件,即可执行文件。

在以下几种情况下,在对程序进行编译、连接时是否会报错?会在哪个步骤报错?
(1.)定义一个函数void f(int x, int y),以f(1)的形式调用。
答:编译出错。
(2) 在源文件的起始处声明了一个函数void f(int x),但未给出其含义,以f(1)的形式调用。
答:连接出错。
(3)在源文件起始处声明了一个函数void f(int x),但未给出其定义,也未对其进行调用。
答:没有错误。
(4) 在源文件a.cpp中定义了一个函数void f(int x),在源文件b.cpp中定义了一个函数void f(int x),试图将两源文件编译后连接在一起。
答:编译出错。
*/
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-09
要把源文件链接一起,建议使用dll,搞定!
相似回答