首页 > 其他分享 >实验1 类和对象

实验1 类和对象

时间:2022-10-01 16:45:33浏览次数:44  
标签:const width 对象 double times int 实验 Rectangle

#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 << "ouput2: ";
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;
}

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

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(2, 3); 
  p1.show();
  Point p2 = p1; 
  p2.show();
  Point p3{p2}; 
  p3.show();
  cout << p3.get_x() << endl;
}

#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(9, 9, 6); 
 c1.show_time();
 c1 = reset(); 
 c1.show_time();
 Clock c2(c1); 
 c2.set_time(9);
 c2.show_time();
}

#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();
}

 X x1; 调用 X(); 

X x2{2049};调用 X(int m); 

X x3{x1};调用 X(const X& obj); 

 X x4{ std::move(x2) };调用 X(X&& obj) noexcept; 

析构函数在最后被自动调用;

#include <iostream>
#include <iomanip>
using namespace std
class Rectangle{
    public:
    Rectangle();
    Rectangle(int l,int w);
    Rectangle(const Rectangle &obj);
    ~Rectangle()=default;
    double len();
    double wide();
    double area();
    double circumference();
    double resize(int times);
    double resize(int l_times,int w_times);
    private: 
    double length,width;
};
    Rectangle::Rectangle():length(2.0),width(1.0) { }
    Rectangle::Rectangle(int l,int w) 
    {   length=(double)l;
        width=(double)w;
    }
    Rectangle::Rectangle(const Rectangle &obj)
    {
        
        length=obj.length;
        width=obj.width;
    }
    double Rectangle::len()
    {
        return length;
    }
    double Rectangle::wide()
    {
        return width;
    }
    double Rectangle::area()
    {
        return length*width;
    }
    double Rectangle::circumference()
    {
        return 2*(length+width);
    }
    double Rectangle::resize(int times)
    {
        return length*times,width*times;
    }
    double Rectangle::resize(int l_times,int w_times)
    {
        return length*l_times,width*w_times;
    }

void output(const Rectangle &rect) {
using namespace std;
cout << "矩形信息: \n";
cout << fixed << setprecision(2); 
Rectangle ur=rect;
cout << "长:    "  << ur.len()<<endl;
cout << "宽:    "  << ur.wide() << endl;
cout << "面积:  " << ur.area() << endl;
cout << "周长:  " << ur.circumference()<< 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,times,int,实验,Rectangle
From: https://www.cnblogs.com/oRIng/p/16738894.html

相关文章

  • 动手动脑课后实验2
    一般初始化:1.没有继承静态变量、静态初始化块-->变量、变量初始化块–>构造方法2.有继承的情况父类静态变量、父类静态初始化块–>子类静态变量、子类静态初始化块–>......
  • Lua 实现面向对象
    functionclass(classname,super)assert(classnameandclassname~="","classnamecannotempyt")localvifGameDefince.UNITY_EDITORthen......
  • 实验4:开源控制器实践——OpenDaylight
    基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。......
  • 此图形中的一个或多个对象无法保存为指定格式。操作未完成 ,因此未创建任何文件。
    “此图形中的一个或多个对象无法保存为指定格式。操作未完成,因此未创建任何文件。”这个有可能是你在用程序绘图时,画了0长度的线,或者0直径的圆等类似的情况。所以在函数......
  • 实验2:Open vSwitch虚拟交换机实践
    一、基本实验(1)执行ovs-vsctlshow命令、以及p0和p1连通性测试的执行结果截图(2)开启MininetCLI并执行pingall命令的截图、上述目录下查看OVS流表的命令结果截图,wireshar......
  • Spring MVC入门(四):域对象共享数据
    使用ServletAPI向request域对象共享数据#后端:向request域对象中添加数据,并转发到success页面@RequestMapping("/testServletAPI")publicStringtestServletAPI(HttpServle......
  • 实验3:OpenFlow协议分析实践
    基本要求1.搭建拓扑,完成相关IP配置2-1.查看抓包结果hello控制器6633端口(我最高能支持OpenFlow1.0)--->交换机51024端口交换机51024端口(我最高能支持OpenFlow1.......
  • MyBatisPlus查询对象转QueryWrapper工具类
    技术背景在使用MyBatisPlus技术实际项目中,尤其是后台管理系统之类的项目中,经常会出现大量的需要将查询对象转换成QueryWrapper的应用场景,这时候就需要编写出现大量的转换代......
  • 按属性值过滤 Firefly 语义切片对象存储 Observables
    按属性值过滤Firefly语义切片对象存储ObservablesImageby恩里克from关注设想我们希望能够观察由属性过滤的反应萤火虫语义切片对象存储事件姓名和价值.[......
  • 实验4:开源控制器实践——OpenDaylight
    1.基础要求a)Mininet拓扑生成并连接控制器的结果b)Mininet中ping测试截图并体现个人信息2.进阶要求整理和记录ODL控制器主要的RESTAPI文档ODL提供的文档链接(Rest......