⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ep4_7.cpp

📁 这里有大量的c语言习题呢!真的是题海哦
💻 CPP
字号:
/* 4.7 对上面4道题中的类对象的数据,由友元函数来进行访问。并对比友元函数、
成员函数和普通函数使用上的不同。*/
//仅以4.4为例

#include <iostream>
#include <cmath>
using namespace std;

class Rectangle {
	double left, top ;
	double right, bottom;
public:
	Rectangle(double l=0, double t=0, double r=0, double b=0);
	~ Rectangle(){};  //析构函数,在此函数体为空
	void Assign(double l,double t,double r,double b);
	double getLeft(){ return left;} // 以下四个函数皆为内联成员函数
	double getRight(){ return right;}
	double getTop(){return top;}
	double getBottom(){return bottom;}
	void Show();
	friend void showprint(Rectangle);
	double Area();
	double Perimeter();
};

// 构造函数,带缺省参数,缺省值为全0,在声明中指定
Rectangle::Rectangle(double l , double t, double r, double b) {
	left = l; top = t;
	right = r; bottom = b; 
}
void Rectangle::Assign(double l, double t, double r, double b){//赋值
	left = l; top = t;
	right = r; bottom = b;
}
double Rectangle::Area(){
	return fabs((right-left)*(top-bottom));
}
double Rectangle::Perimeter(){
	return 2*(fabs(right-left)+fabs(top-bottom));
}
void Rectangle::Show(){//成员函数
	cout<<"left-top point is ("<<left<<","<<top<<")"<<'\n';
	cout<<"right-bottom point is ("<<right<<","<<bottom<<")"<<'\n';
}
void showprint(Rectangle rt){//友元函数,要加类名,但直接调用私有数据成员
	cout<<"left-top point is ("<<rt.left<<","<<rt.top<<")"<<'\n';
	cout<<"right-bottom point is ("<<rt.right<<","<<rt.bottom<<")"<<'\n';
}
void print(Rectangle rt){//普通函数,要用接口函数间接调用私有数据成员
	cout<<"left-top point is ("<<rt.getLeft()<<","<<rt.getTop()<<")"<<'\n';
	cout<<"right-bottom point is ("<<rt.getRight()<<","<<rt.getBottom()<<")"<<'\n';
}

int main(){
	Rectangle rect; 
	rect.Show();
	rect.Assign(100,400,300,200);
	rect.Show();
	Rectangle rect1(0,200,200,0);
	rect1.Show();
	Rectangle rect2(rect1);
	rect2.Show();
	print(rect);
	showprint(rect);
	cout<<"面积"<<rect.Area()<<'\t'<<"周长"<<rect.Perimeter()<<endl;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -