80 lines
1.5 KiB
C++
80 lines
1.5 KiB
C++
// 继上面的Car类, 设计Person类,并设置Car类为Person类的友元类,使得在Person类的成员函数直接访问 Car对象的所有成员。
|
||
// 【提示】Person类的构造函数传入 Car类的对象, 增加Person的成员函数用于操作Car类的成员函数或访问Car对象的属性。
|
||
#include <iostream>
|
||
#include <cstring>
|
||
#include <cstdlib>
|
||
|
||
using namespace std;
|
||
|
||
class Car
|
||
{
|
||
friend class Person;
|
||
|
||
public:
|
||
Car(const string &color, int weight) : color(color), weight(weight) {}
|
||
|
||
public:
|
||
void driver()
|
||
{
|
||
cout << "驾车 " << this->weight << " 车重" << endl;
|
||
}
|
||
void start()
|
||
{
|
||
cout << "启动 " << this->color << " 颜色的车" << endl;
|
||
}
|
||
void stop()
|
||
{
|
||
cout << "停车" << endl;
|
||
}
|
||
|
||
private:
|
||
string color; // 颜色
|
||
int weight; // 重量
|
||
};
|
||
|
||
class Person
|
||
{
|
||
// friend class Car;
|
||
|
||
public:
|
||
Person(Car &car) : tcar(car) {}
|
||
|
||
public:
|
||
void setCarColor(const string &color)
|
||
{
|
||
// strcpy(tcar.color, color);
|
||
tcar.color = color;
|
||
}
|
||
void setCarWeight(int weight)
|
||
{
|
||
tcar.weight = weight;
|
||
}
|
||
void show()
|
||
{
|
||
cout << "驾驶着一辆" << tcar.color << ", 重" << tcar.weight << "千克的车辆" << endl;
|
||
}
|
||
|
||
private:
|
||
Car &tcar;
|
||
};
|
||
|
||
void test()
|
||
{
|
||
Car car("红色", 1000);
|
||
Person person(car);
|
||
person.setCarColor("蓝色");
|
||
person.setCarWeight(1230);
|
||
|
||
car.start();
|
||
car.driver();
|
||
car.stop();
|
||
|
||
person.show();
|
||
}
|
||
|
||
int main()
|
||
{
|
||
test();
|
||
return 0;
|
||
}
|