实验一

#include<iostream>
using std::cout;
using std::endl;
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(4, 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(13, 1, 6); 
   c1.show_time();
   c1 = reset();
   c1.show_time();
   Clock c2(c1);
   c2.set_time(6);
   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 x2{2049};

//定义的构造函数被调用

X x3{x1};

//复制构造函数被调用

X x4{std::move(x2)};

//移动构造函数被调用

 析构函数在对象作用域的末尾被调用。

应当在return 0 后x4,x3 ,  x2 , x1依次被销毁,析构函数依次被调用。

#include <iostream>
#include <iomanip>

class Rectangle{
     public:
     Rectangle();
     Rectangle(double length,double width);
     Rectangle(const Rectangle& x);
     ~Rectangle();
     double len() const;
     double wide() const;
     double area() const;
     double circumference() const;
     void resize(int times);
     void resize(int l_times, int w_times);
     private:
    double length;
    double width;
};
Rectangle::Rectangle():length{2.00},width{1.00}{ };

Rectangle::~Rectangle(){ };

Rectangle::Rectangle(double length,double width):length{length},width{width}{ };

Rectangle::Rectangle(const Rectangle& x):length{x.length},width{x.width}{ };

double Rectangle::len()const{ return length; };

double Rectangle::wide()const{ return width;};

double Rectangle::area() const{ return length*width; };

double Rectangle::circumference() const{ return 2*length+2*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<<" 矩形信息\n";
  cout<<fixed<<setprecision(2);
  cout<<setw(3)<<setfill(' ')<<"长:"<<rect.len()<<endl;
  cout<<setw(3)<<setfill(' ')<<"宽:"<<rect.wide()<<endl;
  cout<<setw(5)<<setfill(' ')<<"面积:" <<rect.area()<<endl;
  cout<<setw(5)<<setfill(' ')<<"周长:"<<rect.circumference()<<endl;
}
int main(){
  Rectangle rect1;
  output(rect1);
  Rectangle rect2(10.0,5.0);
  output(rect2);
  Rectangle rect3(rect1);
  rect3.resize(2);
  output(rect3);
  rect3.resize(5,2);
  output(rect3);

}

  

 

posted @ 2022-09-29 19:47  nibapi  阅读(5)  评论(0编辑  收藏  举报