首页 > 其他分享 >实验一 类与对象

实验一 类与对象

时间:2022-10-05 12:44:18浏览次数:35  
标签:const width 对象 double int length 实验 Rectangle

实验任务1

#include<iostream>
#include<string>
#include<vector>

int main()
{
	using namespace std;
	string s1;
	string s2{"c plus plus"};
	string s3{s2};
	string s4=s2;

	s1="oop";

	vector<string>v1;
	v1.push_back(s1);
	v1.push_back(s2+"1");
	v1.push_back(s3+"2");
	v1.push_back(s4+"3");
	cout<<"output1:"<<endl;
	for(auto item:v1)
		cout<<item<<endl;
	cout<<"output2:";
	for(auto p=v1.begin();p!=v1.end();++p)
		cout<<*p<<endl;
	cout<<"output3:"<<endl;
	for(auto i=0;i<v1.size();++i)
		cout<<v1[i]<<endl;

	vector<string>v2{v1.rbegin(),v1.rend()};
	cout<<"v2:"<<endl;
	for(auto item:v2)
		cout<<item<<endl;
}


实验任务2

#include<iostream>
using  namespace std;

class Point {
public:
	Point(int x0 = 0, int y0 = 0);
	Point(const Point& p);
	~Point() = default;

	int get_x() const { return x; }
	int get_y() const { return y; }
	void show() const;

private:
	int x, y;
};

Point::Point(int x0, int y0) :x{ x0 }, y{ y0 } {
	cout << "constructor called." << endl;
}

Point::Point(const Point& p) :x{ p.x }, y{ p.y } {
	cout << "copy constructor called." << endl;
}
void Point::show() const { 
	cout << "(" << x << ", " << y << ")" << endl; 
}
int main() {
	Point p1(12, 18); 
	p1.show(); Point p2 = p1;  
	p2.show(); Point p3{p2}; 
	p3.show(); cout << p3.get_x() << endl; 
}


实验任务3

#include <iostream>
#include <iomanip>
using std::cout;
using std::endl;

class Clock {
public:
	 Clock(int h = 0, int m = 0, int s = 0);
	 Clock(const Clock & t);
	 ~Clock() = default;
	 void set_time(int h, int m = 0, int s = 0);
	void show_time() const;
private:
	 int hour, minute, second;
};
Clock::Clock(int h, int m, int s) : hour{ h }, minute{ m }, second{ s } {
	 cout << "constructor called" << endl;
}
Clock::Clock(const Clock& t) : hour{ t.hour }, minute{ t.minute },
second{ t.second } {
	 cout << "copy constructor called" << endl;
}
void Clock::set_time(int h, int m, int s) {
	hour = h;
	minute = m;
	second = s;
}
void Clock::show_time() const {
	using std::setw;
	using std::setfill;
	cout << setfill('0') << setw(2) << hour << ":"
		<< setw(2) << minute << ":"
		<< setw(2) << second << endl;
}
Clock reset() {
	return Clock(0, 0, 0); 
}
int main()
{
	Clock c1(15, 20, 5); 
		c1.show_time();
	c1 = reset();
		c1.show_time();
	Clock c2(c1); 
		c2.set_time(6);
	c2.show_time();
}


实验任务4

#include <iostream>

class X {
public:
	X(); 
	~X(); 
	X(int m); 
	X(const X & obj);
	X(X && obj) noexcept; 
void show() const; 
private:
	int data;
};
X::X() : data{ 42 } {
	std::cout << "default constructor called.\n";
}
X::~X() {
	std::cout << "destructor called.\n";
}
X::X(int m) : data{ m } {
	std::cout << "constructor called.\n";
}
X::X(const X& obj) : data{ obj.data } {
	std::cout << "copy constructor called.\n";
}
X::X(X&& obj) noexcept : data{ obj.data } {
	std::cout << "move constructor called.\n";
}
void X::show() const {
	std::cout << data << std::endl;
}
int main() {
	X x1; 
		x1.show();
	X x2{ 2049 };
	x2.show(); 
		X x3{ x1 }; 
		x3.show();
	X x4{ std::move(x2) };
		x4.show();
}


x1.show();
调用默认构造函数;
x2.show();
调用构造函数;
X x3{ x1 };
调用复制构造函数;
X x4{ std::move(x2) };
调用移动构造函数


实验任务5

#include <iostream>
#include <iomanip>
class Rectangle {
public:
	Rectangle();
	Rectangle(double length, double width);
	Rectangle(Rectangle& rect);
	~Rectangle();


	double len() const { return length; }
	double wide() const { return width; }
	double area() const { return width * length; }
	double circumference() const { return (length + width) * 2; }
	void resize(double times);
	void resize(double length_times, double width_times);

private:
	double length, width;

};


Rectangle::Rectangle() :length{ 2.0 }, width{ 2.0 } {}
Rectangle::Rectangle(double l, double w) : length{ l }, width{ w } {}
Rectangle::Rectangle(Rectangle& rect) : length{ rect.length }, width{ rect.width } {}
Rectangle::~Rectangle() {}

void Rectangle::resize(double times)
{
	length = length * times;
	width = width * times;
}
void Rectangle::resize(double length_times, double width_times)
{
	length = length * length_times;
	width = width * width_times;
}





void output(const Rectangle& rect) {
	using namespace std;
	cout << "矩形信息: \n";
	cout << fixed << setprecision(2);
	cout << setw(3) << "长度为:" << rect.len() << endl;
	cout << setw(3) << "宽度为:" << rect.wide() << endl;
	cout << setw(3) << "周长为:" << rect.circumference() << endl;
	cout << setw(3) << "面积为: " << rect.area() << endl;
};
int main() {
	Rectangle rect1;
	output(rect1);
	Rectangle rect2(10, 5);
	output(rect2);
	Rectangle rect3(rect1);
	rect3.resize(2);
	output(rect3);
	rect3.resize(5, 2);
	output(rect3);
}

标签:const,width,对象,double,int,length,实验,Rectangle
From: https://www.cnblogs.com/Cali-AKA/p/16754806.html

相关文章

  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubuntu20.04Desktopamd64三、实验要......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验要求(一)基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;1、Mininet拓扑生成并连接控制器和测试连通性2.通过Postman工具调用OpenDa......
  • 实验4:开源控制器实践——OpenDaylight
    一、基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。......
  • 对稀有飞机数据集进行多属性物体检测:使用YOLOv5的实验过程
    编译:ronghuaiyang(AI公园)导读如何使用物体的多个特征来提升物体检测的能力,使用YOLOv5进行多属性物体检测的实验。我们发布了RarePlanes数据集和基线实验的结果。今天,我们试图......
  • 实验4:开源控制器实践——OpenDaylight
    (一)基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s......
  • 实验4:开源控制器实践——OpenDaylight
    基本要求Mininet拓扑生成并连接控制器的结果Mininet中ping测试截图进阶要求ODL提供的文档链接:http://127.0.0.1:8181/apidoc/explorer/index.html获取拓扑的......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的1.能够独立完成OpenDaylight控制器的安装配置;2.能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环......
  • 实验4:开源控制器实践——OpenDaylight
    一、基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s二、......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight(一)基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器。通过Postman工具调用OpenDaylight提供的API下发......
  • CAD交互绘制块引用对象(网页版)
    主要用到函数说明:_DMxDrawX::DrawBlockReference绘制块引用对象。详细说明如下:参数说明DOUBLEdPosX插入点的X坐标DOUBLEdPosY插入点的Y坐标BSTRpszBlkName图块名DOUBLEd......