实验1 类和对象

#include <iostream>
#include <string>
#include <vector>
int main()
{
using namespace std;
string s1; 
string s2{"c plus plus"}; 
string s3{s2}; 
string s4 = s2; 
s1 = "oop";

vector<string> v1; 
v1.push_back(s1); 
v1.push_back(s2 + "1");
v1.push_back(s3 + "2");
v1.push_back(s4 + "3");

cout << "output1: " << endl;
for(auto item: v1)
cout << item << endl;

cout << "ouput2: ";
for(auto p = v1.begin(); p != v1.end(); ++p)
cout << *p << endl;


cout << "output3: " << endl;
for(auto i = 0; i < v1.size(); ++i)
cout << v1[i] << endl;
vector<string> v2{v1.rbegin(), v1.rend()}; 

cout << "v2: " << endl;
for(auto item: v2)
cout << item << endl;
}

#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(2, 3); 
  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(9, 9, 6); 
 c1.show_time();
 c1 = reset(); 
 c1.show_time();
 Clock c2(c1); 
 c2.set_time(9);
 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(); 

X x2{2049};调用 X(int m); 

X x3{x1};调用 X(const X& obj); 

 X x4{ std::move(x2) };调用 X(X&& obj) noexcept; 

析构函数在最后被自动调用;

#include <iostream>
#include <iomanip>
using namespace std
class Rectangle{
    public:
    Rectangle();
    Rectangle(int l,int w);
    Rectangle(const Rectangle &obj);
    ~Rectangle()=default;
    double len();
    double wide();
    double area();
    double circumference();
    double resize(int times);
    double resize(int l_times,int w_times);
    private: 
    double length,width;
};
    Rectangle::Rectangle():length(2.0),width(1.0) { }
    Rectangle::Rectangle(int l,int w) 
    {   length=(double)l;
        width=(double)w;
    }
    Rectangle::Rectangle(const Rectangle &obj)
    {
        
        length=obj.length;
        width=obj.width;
    }
    double Rectangle::len()
    {
        return length;
    }
    double Rectangle::wide()
    {
        return width;
    }
    double Rectangle::area()
    {
        return length*width;
    }
    double Rectangle::circumference()
    {
        return 2*(length+width);
    }
    double Rectangle::resize(int times)
    {
        return length*times,width*times;
    }
    double Rectangle::resize(int l_times,int w_times)
    {
        return length*l_times,width*w_times;
    }

void output(const Rectangle &rect) {
using namespace std;
cout << "矩形信息: \n";
cout << fixed << setprecision(2); 
Rectangle ur=rect;
cout << "长:    "  << ur.len()<<endl;
cout << "宽:    "  << ur.wide() << endl;
cout << "面积:  " << ur.area() << endl;
cout << "周长:  " << ur.circumference()<< 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-01 16:35  zoRing  阅读(14)  评论(0)    收藏  举报