首页 > 其他分享 >实验1

实验1

时间:2022-10-05 12:44:52浏览次数:50  
标签:const cout int v1 实验 include 构造函数



任务5
#include<iostream> #include<iomanip> class Rectangle { public: Rectangle(float l=2.0,float w=1.0):length{l},width{w}{} Rectangle(const Rectangle& obj): length{obj.length},width{obj.width}{} ~Rectangle()=default; float len() const {return length;} float wide() const {return width;} float area() const {return length*width;} float circumference() const {return 2*(length+width);} void resize(int times); void resize(int l_times,int w_times); private: float 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<<std::left<<setw(7)<<"长:"<<std::right<< fixed<<setprecision(2)<<setw(5)<<rect.len()<<endl; cout<<std::left<<setw(7)<<"宽:"<<std::right<< fixed<<setprecision(2)<<setw(5)<<rect.wide()<<endl; cout<<std::left<<setw(7)<<"面积:"<<std::right<< fixed<<setprecision(2)<<setw(5)<<rect.area()<<endl; cout<<std::left<<setw(7)<<"周长:"<<std::right<< fixed<<setprecision(2)<<setw(5)<<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);
}

 

// Point类
// 相较于教材,在构造函数的写法上,采用了业界更通用的初始化列表方式
#include <iostream>
using std::cout;

 



// 时钟类Clock
#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();
}

 

// 相较于教材,做了以下微调整:
// 1. 在构造函数的写法上,采用了业界更通用的初始化列表方式
// 2. 对于时钟显示的格式,使用操控符函数,控制其输出格式
#include <iostream>
#include <iomanip>
using std::cout;
using std::endl;
// 定义时钟类Clock
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::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();
}

 

using std::endl;
// 定义Point类
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::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 <string>
#include <vector>
#include <cmath>
#include <cstdlib>
#include <time.h>
// 定义模板函数,用于输出vector容器对象元素的值
template<typename T>
void output(const T& obj)  // 引用作为函数参数
{
  for(auto item: obj)

 

    std::cout << item << " ";
  std::cout << std::endl;
}
int main()
{
  using namespace std;
  vector<int> v1{1, 9, 8, 4};
  v1.insert(v1.begin(), 2022);  // 在v1.begin()之前的位置插入
  v1.insert(v1.end(), 2023);  // 在v1.end()之前的位置插入
  cout << "v1: ";
  output(v1);
 
  v1.pop_back();  // 从v1尾部删除数据项
  v1.erase(v1.begin()); // 删除v1.begin()位置的数据项
  cout << "v1: ";
  output(v1);
  vector<string> v2{"《1984》", "《动物农场》", "《美丽新世界》"};
  cout << "v2: ";
  output(v2);
}

 


#include <iostream> #include <string> #include <vector> int main() {   using namespace std;   string s1;      // 创建一个string对象   string s2{"c plus plus"};  // 创建一个string对象,并初始化   string s3{s2};    // 创建一个string对象,并用s2对其进行初始化   string s4 = s2;   // 创建一个string对象,并用s2对其进行初始化   s1 = "oop";   vector<string> v1;   // 创建一个vector对象

 

  v1.push_back(s1);    // 向v1末尾添加数据项s1
  v1.push_back(s2 + "1");
  v1.push_back(s3 + "2");
  v1.push_back(s4 + "3");
  // 输出方式1:使用自动类型推导、范围for
  cout << "output1: " << endl;
  for(auto item: v1)
    cout << item << endl;
 
  // 输出方式2:使用自动类型推导、迭代器
  cout << "ouput2: ";
  for(auto p = v1.begin(); p != v1.end(); ++p)
    cout << *p << endl;
 
  // 输出方式3:使用自动类型推导、索引
  cout << "output3: " << endl;
  for(auto i = 0; i < v1.size(); ++i)
    cout << v1[i] << endl;
  vector<string> v2{v1.rbegin(), v1.rend()};  // 使用vector对象v1极其迭代器,
构造对象v2
  cout << "v2: " << endl;
  for(auto item: v2)
    cout << item << endl;}

 

标签:const,cout,int,v1,实验,include,构造函数
From: https://www.cnblogs.com/2021zxq/p/16738948.html

相关文章

  • 实验一 类与对象
    实验任务1#include<iostream>#include<string>#include<vector>intmain(){ usingnamespacestd; strings1; strings2{"cplusplus"}; strings3{s2}; stri......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验目的能够独立完成OpenDaylight控制器的安装配置;能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环境Ubuntu20.04Desktopamd64三、实验要......
  • 实验4:开源控制器实践——OpenDaylight
    一、实验要求(一)基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;1、Mininet拓扑生成并连接控制器和测试连通性2.通过Postman工具调用OpenDa......
  • 实验4:开源控制器实践——OpenDaylight
    一、基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s。......
  • 对稀有飞机数据集进行多属性物体检测:使用YOLOv5的实验过程
    编译:ronghuaiyang(AI公园)导读如何使用物体的多个特征来提升物体检测的能力,使用YOLOv5进行多属性物体检测的实验。我们发布了RarePlanes数据集和基线实验的结果。今天,我们试图......
  • 实验4:开源控制器实践——OpenDaylight
    (一)基本要求1.利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;2.通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s......
  • 实验4:开源控制器实践——OpenDaylight
    基本要求Mininet拓扑生成并连接控制器的结果Mininet中ping测试截图进阶要求ODL提供的文档链接:http://127.0.0.1:8181/apidoc/explorer/index.html获取拓扑的......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight一、实验目的1.能够独立完成OpenDaylight控制器的安装配置;2.能够使用Postman工具调用OpenDaylightAPI接口下发流表。二、实验环......
  • 实验4:开源控制器实践——OpenDaylight
    一、基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器;通过Postman工具调用OpenDaylight提供的API下发流表,实现拓扑内主机h1和h3网络中断10s二、......
  • 实验4:开源控制器实践——OpenDaylight
    实验4:开源控制器实践——OpenDaylight(一)基本要求利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight控制器。通过Postman工具调用OpenDaylight提供的API下发......