实验一

#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(6,7);
p1.show();

point p2=p1;
p2.show();

point p3{p2};
p3.show();
cout << p3.get_x()<<endl;

return 0;

}

 

 

 

三::::

 

#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(11,0,4);
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();
}

 

 

对象被创建后即调用构造函数,对象被销毁前时即调用析构函数

 

 

 

 

五::::

#include <iostream>
#include <iomanip>

class rectangle{
public:
rectangle(double l=2.00,double w=1.00):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);
}

 

 

 

posted @ 2022-10-02 23:32  戴鲁  阅读(18)  评论(0编辑  收藏  举报