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

实验1 类和对象

时间:2022-09-28 20:12:25浏览次数:44  
标签:const width 对象 double Clock int length 实验

实验任务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(7, 8); 
    p1.show();
    
    Point p2 = p1; 
    p2.show();
    
    Point p3(p2); 
    p3.show();
    
    cout << p3.get_x() << endl;
}

 

实验任务3

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

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 construct called"<<endl;
}

void Clock::set_time(int h,int m,int s){
    hour=h;
    minute=m;
    second=s;
}

void Clock::show_time() const{
    cout<<setfill('0')<<setw(2)<<hour<<":"
    <<setw(2)<<minute<<":"
    <<setw(2)<<second<<endl;

}

Clock reset() {
    return Clock(0, 0, 0); 
}
int main()
{
    Clock c1(17, 12, 5); 
    c1.show_time();
    
    c1 = reset(); 
    c1.show_time();
    
    Clock c2(c1);
    c2.set_time(8);
    c2.show_time();
}

 

 

实验任务4

#include <iostream>
using namespace std;

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} { 
    cout << "default constructor called.\n"; 
}

X::X(int m): data{m} {
    cout << "constructor called.\n";
}

X::X(const X& obj): data{obj.data} {
    cout << "copy constructor called.\n";
}

X::X(X&& obj) noexcept: data{obj.data} {
    cout << "move constructor called.\n";
}

void X::show() const {
    cout << data << 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::~X() {
    cout << "destructor called.\n";
}
X x1; 执行时默认构造函数被调用;

X x2{2049}; 执行时构造函数被调用;
X x3{x1}; 执行时复制构造函数被调用;

X x4{ std::move(x2) }; 执行时移动构造函数被调用;

每个对象在使用完后都会调用一次析构函数;

实验任务5
#include <iostream> 
#include <iomanip>
using namespace std;

class Rectangle{
public:
    Rectangle():length(2.0),width(1.0){    };
    Rectangle(double l,double w):length(l),width(w){ };
    Rectangle(const Rectangle &rec):length(rec.length),width(rec.width){ };
    ~Rectangle()=default;
    
    double len() const {return length;}
    double wide() const {return width;}
    double area() const {return length*width;}
    double circumference() const {return 2*(length+width);}
    
    void resize(double times){
        length*=times;
        width*=times;
    }
    
    void resize(double l_times,double w_times){
        length*=l_times;
        width*=w_times;
    }
        
private:
    double length;
    double width;
        
};

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

相关文章

  • 实验一:类和对象
    实验任务2#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);~Point()=defa......
  • 实验1 类和对象
    #include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);Point()=default;intget_x......
  • 购物车系统的面向对象设计(Version1.0)
    0.人员分工共同工作:进行前期调查以及框架设计的考量,对自己所设计的类进行编码规范检查,完成博客的书写李蓉完成购物车系统中商品管理功能类设计和用户登陆功能的实现......
  • 实验一
    实验任务2源代码:1#include<iostream>2usingstd::cout;3usingstd::endl;45classPoint6{7public:8Point(intx0=0,inty0=0);9P......
  • 实验三OpenFlow协议分析实践
    1.请用Markdown排版;2.基础要求只需要提交导入到/home/用户名/学号/lab3/目录下的拓扑文件,wireshark抓包的结果截图和对应的文字说明;1)hello交换机52298端口(最高支持Ope......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......
  • 实验2:Open vSwitch虚拟交换机实践
    一、实验目的1.能够对OpenvSwitch进行基本操作;2.能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;3.能够通过Mininet的Python代码运行OVS命令,控制网络拓......
  • 实验1 类与对象
    实验任务2#include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);......
  • 实验1:SDN拓扑实践
    (一)基本要求1.使用Mininet可视化工具,生成下图所示的拓扑,并保存拓扑文件名为学号.py2.使用Mininet的命令行生成如下拓扑:a)3台交换机,每个交换机连接1台主机,3台交换机连......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......