实验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); }



浙公网安备 33010602011771号