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

实验1 类和对象

时间:2022-10-01 20:24:08浏览次数:41  
标签:const width 对象 times int length 实验 Rectangle

实验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(1, 5);
    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(1, 2, 3);
    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 << "default constructor called.\n";
}

x::x(int m) : data{ m } {
    std::cout << "constructor called.\n";
}
x::x(const x& obj) : data{ obj.data } {
    std::cout << "move 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 x2{2049},调用带参数的构造函数,

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

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

析构函数是在程序结束之前才进行运行,最后对x1,x2,x3,x4进行销毁

实验5
 #include<iostream>
 #include<iomanip>
class Rectangle {
 public:
           Rectangle();   //默认构造函数
          Rectangle(double l, double w);//构造函数
          Rectangle(Rectangle & rect);//复制函数
    
       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(int times);
        void resize(int l_times, int w_times);
; private:
         double length, width;
    
};
 Rectangle::Rectangle() {
       length = 2.0;
       width = 1.0;

}
 Rectangle::Rectangle(double l, double w) {
        length = l;
        width = w;
    
}

Rectangle::Rectangle(Rectangle & rect) {
        length = rect.length;
      width = rect.width;
    
}
 void Rectangle::resize(int times) {
        length = length * times;
        width = width * times;
    
}
 void Rectangle::resize(int l_times, int w_times) {
        length = length * l_times;
        width = width * w_times;
}
 void output(const Rectangle & rect)
 {
       using namespace std;
       cout << "矩形信息:" << endl;
       cout << "长:    " << fixed << setprecision(2) << rect.len() << endl;
       cout << "宽:    " << fixed << setprecision(2) << rect.wide() << endl;
       cout << "面积:  " << fixed << setprecision(2) << rect.area() << endl;
       cout << "周长:  " << fixed << setprecision(2) << 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,对象,times,int,length,实验,Rectangle
From: https://www.cnblogs.com/zqpqaz151034/p/16747689.html

相关文章

  • 数据类型,变量,运算符,Scanner对象
    ##注释```javapackagecom.chen.base;publicclassHelloWorld{publicstaticvoidmain(String[]args){//单行注释:只能注释一行文字//输出一个......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight(一)基本要求Mininet拓扑生成并连接控制器的结果Mininet中ping测试截图(二)进阶要求1.获取拓扑的交换机URL:http://127.0.0.1:......
  • 类与对象
    #include<iostream>usingstd::cout;usingstd::endl;classPoint{public:Point(intx0=0,inty0=0);Point(constPoint&p);~Point()=defau......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的1、能够独立完成OpenDaylight控制器的安装配置;2、能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubuntu20.04Desktopamd64三、......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight第一部分:基本实验1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器执行结果截图2.通过Postman工具调用OpenDayl......
  • 实验1 类和对象
    #include<iostream>#include<string>#include<vector>intmain(){usingnamespacestd;strings1;strings2{"cplusplus"};strings3{s2};strings4=s......
  • 动手动脑课后实验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。......