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

实验一:类和对象

时间:2022-09-28 20:00:43浏览次数:39  
标签:const width 对象 void times int length 实验

实验任务2

#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(19,89);
    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(9,8,29);
    c1.show_time();
    
    c1=reset();
    c1.show_time();
    
    Clock c2(c1);
    c2.set_time(8,8,8);
    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<<"copy 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 x2{2049},调用带参数的构造函数,

X x3{x1},调用复制构造函数,

X x4{std::move(x2)},调用移动构造函数。

析构函数是在程序即将结束之前被调用的,并且对x1,x2,x3,x4进行销毁。

实验任务5

#include<iostream>
#include<iomanip>
class Rectangle{
    public:
        Rectangle(double l=2.0,double w=1.0):length{l},width{w}{};
        Rectangle(const Rectangle& obj):length{obj.length},width{obj.width}{};
        ~Rectangle()=default;
        double len() const{return length;}
        double wide() const{return width;}
        double area() const{return length*width;}
        double circumference() const{return (length+width)*2;}
        void resize(int times);
        void resize(int l_times,int w_times);
    private:
        double length,width;
};
void Rectangle::resize(int times){
    length*=times;
    width*=times;
}
void Rectangle::resize(int l_times,int w_times){
    length*=l_times;
    width*=w_times;
}
void output(const Rectangle &rect){
    using namespace std;
    cout<<"矩形信息:\n";
    cout<<fixed<<setprecision(2);
    cout<<std::left<<setw(8)<<"长:"<<rect.len()<<endl;
    cout<<std::left<<setw(8)<<"宽: "<<rect.wide()<<endl;
    cout<<std::left<<setw(8)<<"面积:"<<rect.area()<<endl;
    cout<<std::left<<setw(8)<<"周长:"<<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,对象,void,times,int,length,实验
From: https://www.cnblogs.com/wanglaich/p/16739372.html

相关文章

  • 实验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......
  • 实验1 类和对象
    #include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);~Point......