实验1 C语言开发环境使用和数据类型、运算符、表达式

实验二:

 


#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(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(12,0,5);
    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<<"dafault 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)} 调用移动构造函数。

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

实验五:

#include<iostream>
#include<iomanip>
class rectangle{
public:
    rectangle();
    rectangle(double l,double w);
    rectangle(const rectangle& rect);
    ~rectangle(){}
    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(const 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;
}
rectangle 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);
}

 


  


 

posted @ 2022-09-28 17:30  yzhag  阅读(13)  评论(0)    收藏  举报