不允许使用友元函数,改写习题15-3程序。 #include using namespace std; //代码修改----- class Car{ public: Car(int j){size=j;} friend int Leisure(int time, Car& aobj, Boat& bobj); protected: int size; }; class Boat{ public: Boat(int j){size=j;} friend int Leisure(int time, Car& aobj, Boat& bobj); protected: int size; }; //------------------------ int Leisure(int time, Car& aobj, Boat& bobj){ return time * aobj.Get() * bobj.Get(); } int main(){ Car c1(2); Boat b1(3); int time =4; cout <<Leisure(time,c1,b1); }
时间: 2023-06-06 13:07:58 浏览: 147
习题15-3程序可以通过定义友元函数来访问类中的私有成员变量和方法。如果不允许使用友元函数,可以在类中添加公有方法来访问私有成员变量和方法。例如,如果在习题15-3程序中有如下的类定义:
```cpp
class Rectangle {
private:
double width;
double height;
public:
Rectangle(double w, double h);
double getArea();
friend void print(Rectangle r);
};
```
可以将`print`函数改为成员方法`printInfo`,并将其放置在类的公有部分,修改后的类定义如下:
```cpp
class Rectangle {
private:
double width;
double height;
public:
Rectangle(double w, double h);
double getArea();
void printInfo();
};
```
`printInfo`方法的实现与原来的`print`函数相同,只需要将其中的`r.width`和`r.height`改为`this->width`和`this->height`即可。这样,就可以通过调用`printInfo`方法来输出矩形的信息。
相关问题
不允许使用友元函数,改写习题15-3程序。 #include using namespace std; //代码修改----- class Car{ public: Car(int j){size=j;} friend int Leisure(int time, Car& aobj, Boat& bobj); protected: int size; }; class Boat{ public: Boat(int j){size=j;} friend int Leisure(int time, Car& aobj, Boat& bobj); protected: int size; }; //------------------------ int Leisure(int time, Car& aobj, Boat& bobj){ return time * aobj.Get() * bobj.Get(); } int main(){ Car c1(2); Boat b1(3); int time =4; cout <<Leisure(time,c1,b1); }
习题15-3程序是一个使用了友元函数的程序,题目要求我们禁止使用友元函数,并对程序进行修改。具体修改方法视程序实际情况而定,但应该是通过其他方式实现程序原有的功能,并且不使用友元函数。例如,可以使用类的public成员函数来操作私有数据,或者使用全局函数但不使用友元函数等。
友元函数重载--运算符
友元函数是指一个函数可以访问另一个类的私有成员。当我们需要对类中的一些数据进行运算时,可以使用重载运算符的方式来实现。其中,友元函数重载--运算符就是一种常见的重载方式。
在C++中,我们可以通过在类中定义友元函数来实现对--运算符的重载。具体实现方法是,在类中声明该函数为友元函数,并在函数前面加上关键字friend,这样该函数就可以直接访问类中的私有成员。
友元函数重载--运算符的作用是用于对类中的某个数值进行自减操作。例如,如果有一个名为num的成员变量,我们可以通过实现--运算符来使其自减。示例代码如下:
```
class MyClass {
private:
int num;
public:
MyClass(int n) {
num = n;
}
friend MyClass operator--(MyClass& obj) {
obj.num--;
return obj;
}
};
```
在上述代码中,我们定义了一个名为MyClass的类,并在其中定义了一个私有成员变量num。接着,我们声明了一个友元函数operator--,并在其中实现了自减操作。最后,我们将该函数返回一个MyClass类型的对象。