#include <iostream>
#include <string>
#include <vector>
#include <array>
template<typename T>
void output1(const T &obj) {
for(auto i: obj)
std::cout << i << ", ";
std::cout << "\b\b \n";
}
template<typename T>
void output2(const T &obj) {
for(auto p = obj.begin(); p != obj.end(); ++p)
std::cout << *p << ", ";
std::cout << "\b\b \n";
}
void test_array() {
using namespace std;
array<int, 5> x1;
cout << "x1.size() = " << x1.size() << endl;
x1.fill(42);
x1.at(0) = 999;
x1[4] = -999;
cout << "x1: ";
output1(x1);
cout << "x1: ";
output2(x1);
array<int, 5> x2(x1);
cout << boolalpha << (x1 == x2) << endl;
x2.fill(22);
cout << "x2: ";
output1(x2);
swap(x1, x2);
cout << "x1: ";
output1(x1);
cout << "x2: ";
output1(x2);
}
void test_vector() {
using namespace std;
vector<int> v1;
cout << v1.size() << endl;
cout << v1.max_size() << endl;
v1.push_back(55);
cout << "v1: ";
output1(v1);
vector<int> v2 {1, 0, 5, 2};
v2.pop_back();
v2.erase(v2.begin());
v2.insert(v2.begin(), 999);
v2.insert(v2.end(), -999);
cout << v2.size() << endl;
cout << "v2: ";
output2(v2);
vector<int> v3(5, 42);
cout << "v3: ";
output1(v3);
vector<int> v4(v3.begin(), v3.end()-2);
cout << "v4: ";
output1(v4);
}
void test_string() {
using namespace std;
string s1{"oop"};
cout << s1.size() << endl;
for(auto &i: s1)
i -= 32;
s1 += "2023";
s1.append(", hello");
cout << s1 << endl;
}
int main() {
using namespace std;
cout << "===========测试1: array模板类基础用法===========" << endl;
test_array();
cout << "\n===========测试2: vector模板类基础用法===========" << endl;
test_vector();
cout << "\n===========测试3: string类基础用法===========" << endl;
test_string();
}
#include<iostream> #include<complex> void test_std_complex(){ using namespace std; complex<double> c1{3,4},c2{4.5}; const complex<double> c3{c2}; cout<<"c1="<<c1<<endl; cout<<"c2="<<c2<<endl; cout<<"c3="<<c3<<endl; cout<<"c3.real="<<c3.real()<<","<<"c3.imag="<<c3.imag()<<endl; cout<<"c1+c2="<<c1+c2<<endl; cout<<"c1-c2="<<c1-c2<<endl; cout<<"abs(c1)= "<<abs(c1)<<endl; cout<<boolalpha; cout<<"c1==c2:"<<(c1==c2)<<endl; cout<<"c3==c2:"<<(c3==c2)<<endl; complex<double> c4=2; cout<<"c4="<<c4<<endl; c4+=c1; cout<<"c4="<<c4<<endl; } int main(){ test_std_complex(); }
#include<iostream> #include<string> using namespace std; class T{ public: T(int x=0,int y=0); T(const T &t); T(T &&t); ~T();
void set_m1(int x); int get_m1() const; int get_m2() const; void display() const; friend void func(); private: int m1,m2; public: static void disply_count(); public: static const string doc; static const int max_count; private: static int count; }; const string T::doc{"a simple class"}; const int T::max_count=99; int T::count=0; T::T(int x,int y):m1{x},m2{y}{ ++count; cout<<"constructor called.\n"; } T::T(const T &t):m1{t.m1},m2{t.m2}{ ++count; cout<<"copy constructor called.\n"; } T::T(T &&t):m1{t.m1},m2{t.m2}{ ++count; cout<<"move constructor called.\n"; } T::~T(){ --count ; cout<<"destructor called.\n"; } void T::set_m1(int x){ m1=x; } int T::get_m1() const { return m1; } int T::get_m2() const { return m2; } void T::display() const{ cout<<m1<<","<<m2<<endl; } void T::disply_count(){ cout<<"T objects:"<<count<<endl; } void func(){ T t1; t1.set_m1(55); t1.m2=77; t1.display(); } void test(){ cout<<"T class info:"<<T::doc<<endl; cout<<"T objects max_count:"<<T::max_count<<endl; T::disply_count(); T t1; t1.display(); t1.set_m1(42); T t2{t1}; t2.display(); T t3{std::move(t1)}; t3.display(); t1.display(); T::disply_count(); } int main(){ cout<<"===========测试类T====================="<<endl; test(); cout<<endl; cout<<"=============测试友元函数funC()============="<<endl; func(); }
#include<iostream> #include<string> #include<iomanip> using namespace std;
class Rect{ public: Rect(); Rect(int l,int w); Rect (const Rect &r);
int len() const { return length; } int wide() const { return width; } int circumference() const { return 2*(length+width); } int area() const { return width*length; } void resize(double times); void resize(double l_times,double w_times); static string doc ; static int size_info() { return count; } ~Rect(){ count--; }
private: int length,width; static int count; }; Rect::Rect() { length=2; width=1; count++; } Rect::Rect(int l,int w) { length=l; width=w; count++; } Rect::Rect(const Rect &r) { length=r.length; width=r.width; count++; } void Rect::resize(double times){ length=length*times; width=width*times; } void Rect::resize(double l_times,double w_times){ length=length*l_times; width=width*w_times; } int Rect::count=0; string Rect::doc="a simple Rect class";
void output(const Rect &r){ cout<<"矩形信息:"<<endl; cout<<fixed<<setprecision(2); cout<<"长:"<<r.len()<<endl; cout<<"宽:"<<r.wide()<<endl; cout<<"面积:"<<r.area()<<endl; cout<<"周长:"<<r.circumference()<<endl; } void test(){ cout<<"矩形类信息:"<<Rect::doc<<endl; cout<<"当前矩形对象数目:"<<Rect::size_info()<<endl; Rect r1; output(r1); Rect r2(4,3); output(r2); Rect r3(r2); r3.resize(2); output(r3); r3.resize(5,2); output(r3); cout<<"当前矩形对象数目:"<<Rect::size_info()<<endl; } int main(){ test(); cout<<"当前矩形对象数目:"<<Rect::size_info<<endl; }
#include<iostream> #include<cmath> class Complex{ public : Complex(double r=0,double i=0){ real=r;imag=i ;} Complex(const Complex &x){ real=x.real; imag=x.imag; } double get_real() const{ return real; } double get_imag() const{ return imag; } void show() const{ using namespace std; if(real==0&&imag==0){cout<<0;} else if(real==0){cout<<imag<<"i";} else if(imag==0){cout<<real;} else{ if(imag>0){ cout<<real<<"+"<<imag<<"i"; } else if(imag<0){ cout<<real<<"-"<<-imag<<"i"; } } } void add( const Complex &x) {real+=x.real; imag+=x.imag;} friend Complex add(const Complex &c1,const Complex &c2); friend bool is_equal(const Complex &c1,const Complex &c2); friend double abs(const Complex &c1); private: double real; double imag;
}; Complex add(const Complex &c1,const Complex &c2){ double real=c1.real+c2.real; double imag=c1.imag+c2.imag; return Complex(real,imag); } bool is_equal(const Complex &c1,const Complex&c2){ if(c1.real==c2.real&&c1.imag==c2.imag) return true; else return false; } double abs(const Complex &c1){ return sqrt(c1.real*c1.real+c1.imag*c1.imag); } void test(){ using namespace std; Complex c1(3,-4); const Complex c2(4.5); Complex c3(c1); cout<<"c1="; c1.show(); cout<<endl; cout<<"c2.imag="<<c2.get_imag()<<endl; cout<<"c3="; c3.show(); cout<<endl; cout<<"abs(c1)="; cout<<abs(c1)<<endl; cout<<boolalpha; cout<<"c1==c3:"<<is_equal(c1,c3)<<endl; cout<<"c1==c2:"<<is_equal(c1,c2)<<endl; Complex c4; c4=add(c1,c2); cout<<"c4=c1+c2="; c4.show(); cout<<endl; } int main(){ test(); }
标签:real,const,cout,int,void,实验,Rect From: https://www.cnblogs.com/shaoshuai-nuist/p/17770294.html