类与对象

实验任务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(10, 20);
    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 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(19,5,22); 
    c1.show_time();
    c1=reset();
    c1.show_time();
    Clock c2{c1};
    c2.set_time(18);
    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() 
{
  cout << "destructor 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 << 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();
}

运行截图:

析构函数在最后调用。从先往后调用。

实验任务5:

#include <iostream> 
#include <iomanip>
using namespace std;
class Rectangle
{
public:

    Rectangle(float a= 2.0,float b=1.0);
    void resize(int x);    
    void resize(int x,int y);
    float chang,kuan;
};
void Rectangle::resize(int x)
{
    chang=chang*x;
    kuan=kuan*x;
}
void Rectangle::resize(int x,int y)
{
    chang=chang*x;
    kuan=kuan*y;
}
Rectangle::Rectangle(float a,float b):chang{a},kuan{b}
{
}

void output(const Rectangle &rect)
{ 
    cout << "矩形信息: \n";
    cout << fixed << setprecision(2);
    cout<<"长:    "<<rect.chang<<endl;
    cout<<"宽:    "<<rect.kuan<<endl;
    cout<<"周长:  "<<2*(rect.chang+rect.kuan)<<endl;
    cout<<"面积:  "<<rect.chang*rect.kuan<<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); 
}

运行截图:

 

posted @ 2022-10-05 15:56  动次打次的动点P  阅读(9)  评论(0)    收藏  举报