#ifndef T_H
#define T_H
#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();
static const string doc;
static const int max_count;
private:
static int count;
};
void func();
#endif
#include "t1.h"
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 construcyor 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();
}
#include "t1.h"
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();
}
![]()
#pragma once
#include <iostream>
#include <string>
#include <iomanip>
using std::string;
using std::cout;
using std::endl;
using std::setfill;
using std::setw;
using std::left;
using std::right;
using std::to_string;
struct Date
{
int year;
int month;
int day;
};
// Employee类的声明
class Employee
{
public:
Employee();
Employee(string name0, double salary0, int y, int m, int d = 1);
void set_info(string name0, double salary0, int y, int m, int d = 1);
// 设置雇员信息
string get_name() const; // 获取雇员姓名
double get_salary() const; // 获取雇员薪水
void display_info() const; // 显示雇员信息
void update_salary(double s); // 更新雇员薪水
void update_hire_date(int y, int m, int d); // 更新雇佣日期
void raise_salary(double by_percent); // 计算提薪加成
public:
static void display_count(); // 类方法,显示雇员总数
private:
string id; // 雇员工号
string name; // 雇员姓名
double salary; // 雇员薪水
Date hire_date; // 雇员雇佣日期
public:
static const string doc; // 类属性,用于描述类
private:
static int count; // 类属性,用于记录雇员总人数
};
const string Employee::doc {"a simple Employee class"};
int Employee::count = 0;
// 默认构造函数
Employee::Employee(): id{ to_string(count+1) }
{
++count;
}
// 带参数的构造函数
Employee::Employee(string name0, double salary0, int y, int m, int d):id{to_string(count+1)}, name{name0}, salary{salary0},
hire_date{y, m, d}
{
++count;
}
// 设置员工信息
void Employee::set_info(string name0, double salary0, int y, int m, int d)
{
name = name0;
salary = salary0;
hire_date.year = y;
hire_date.month = m;
hire_date.day = d;
}
// 获取员工姓名
string Employee::get_name() const
{
return name;
}
// 获取员工薪水
double Employee::get_salary() const
{
return salary;
}
// 显示雇员信息
void Employee::display_info() const {
cout << left << setw(15) << "id: " << id << endl;
cout << setw(15) << "name: " << name << endl;
cout << setw(15) << "salary: " << salary << endl;
cout << setw(15) << "hire_date: " << hire_date.year << "-";
cout << std::right << setfill('0') << setw(2) << hire_date.month << "-"<< setw(2) << hire_date.day;
cout << setfill(' '); // 恢复到默认空格填充
}
// 更新薪水
void Employee::update_salary(double s)
{
salary = s;
}
// 更新雇佣日期
void Employee::update_hire_date(int y, int m, int d)
{
hire_date.year = y;
hire_date.month = m;
hire_date.day = d;
}
// 雇员提薪加成
// by_percent是提升比例
void Employee::raise_salary(double by_percent)
{
double raise = salary * by_percent / 100;
salary += raise;
}
// 类方法
// 显示雇员总数
void Employee::display_count()
{
cout << "there are " << count << " employees\n";
}
#include "t2.h"
#include <iostream>
// 测试:Employee类
void test()
{
using std::cout;
using std::endl;
cout << Employee::doc << endl << endl;
Employee employee1;
employee1.set_info("Sam", 30000, 2015, 1, 6);
employee1.update_hire_date(2019, 6, 30);
employee1.update_salary(35000);
employee1.display_info();
cout << endl << endl;
Employee employee2{"Tony", 20000, 2023, 3, 16};
employee2.raise_salary(15); // 提成15%
employee2.display_info();
cout << endl << endl;
Employee::display_count();
}
int main()
{
test();
![]()
}
![]()
#pragma once
#include <iostream>
#include <cmath>
using namespace std;
class Complex
{
public:
Complex(double a = 0, double b = 0) :a(a), b(b) {}
Complex(const Complex& x) ;
double get_real() { return a; }
double get_imag() const { return b; }
void show() const;
void add(const Complex &z);
~Complex(){};
friend Complex add(const Complex &k,const Complex &l);
friend bool is_equal(const Complex &asd,const Complex &zxc);
friend double abs(const Complex &x);
private:
double a, b;
};
#include "t3.h"
Complex::Complex(const Complex& x)
{
a = x.a;
b = x.b;
}
void Complex::show() const
{
if (b > 0)
cout << a << "+" << b << "i" ;
else if (b < 0)
cout << a << b << "i" ;
else
cout << a ;
}
void Complex::add(const Complex &z)
{
a = a + z.a;
b = b + z.b;
}
Complex add(const Complex &k,const Complex &l)
{
Complex s;
s.a=k.a+l.a;s.b=k.b+l.b;
return (s);
}
bool is_equal(const Complex &asd,const Complex &zxc)
{
if (asd.a == zxc.a && asd.b == zxc.b)
return (true);
else
return (false);
}
double abs(const Complex &x)
{
return(sqrt(x.a * x.a + x.b * x.b));
}
#include "t3.h"
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 = ";
c2.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;
c1.add(c2);
cout << "c1 += c2, " << "c1 = ";
c1.show();
cout << endl;
}
int main()
{
test();
}
![]()
using namespace std;
class User
{
public:
User(string name, string passwd = "111111", string email = ""):name{name},passwd{passwd},email{email}{n++;}
User(User& x);
string set_email();
void change_passwd();
void print_info();
static int print_n();
~User(){--n;}
private:
string name;
string passwd;
string email;
static int n;
};
User::User(User& x)
{
name = x.name; passwd = x.passwd; email = x.email;
}
string User::set_email()
{
cout << "Enter email address:";
cin >> email;
cout<< "email is set successfully..." << endl;
}
int User::n=0;
void User::change_passwd()//修改密码
{
for (int i = 0; i < 3; i++)
{
if(i==0)
cout << "Enter old password:";
cin >> passwd;
if (passwd == "111111")
{
cout<<"Enter new passwd:";
cin >> passwd;
cout << "new passwd is set successfilly" << endl;
break;
}
else if(i<2)
cout<<"Password input error.Plase re-enter it again:";
else
cout<<"assword input error.Plase try after while";
}
cout<<endl;
}
int User::print_n()
{
cout<<"there are "<<n<<"users"<<endl;
}
void User::print_info()
{
string s(passwd.size(),'*');
cout<<"name:"<<name<<endl;
cout<<"passwd:"<< s<<endl;
cout<<"email:"<<email<<endl;
}
#include "t4.h"
#include <iostream>
void test()
{
using std::cout;
using std::endl;
cout << "testing 1......\n";
User user1("Jonny", "92197", "xyz@hotmail.com");
user1.print_info();
cout << endl<< "testing 2......\n\n";
User user2("殷润哲");user2.print_info();
user2.change_passwd();
user2.set_email();
user2.print_info();
cout << endl;
User::print_n();
}
int main()
{
test();
}
![]()
![]()
//account.h
class SavingsAccount
{
private:
int id;
double balance;
double rate;
int lastDate;
double accumulation;
static double total;
void record(int data,double amount);
double accumulate(int date)const
{
return accumulation+balance*(date-lastDate);
}
public:
SavingsAccount(int data,int id,double rate);
int getId()const{return id;}
double getBalance()const{return balance;}
double getRate()const{return rate;}
static double getTotal(){return total;}
void deposit(int date,double amount);
void withdraw(int data,double amount);
void settle(int date);
void show() const;
};
//account.cpp
#include"account.h"
#include<cmath>
#include<iostream>
using namespace std;
double SavingsAccount::total=0;
SavingsAccount::SavingsAccount(int date,int id,double rate):id(id),balance(0),rate(rate),lastDate(date),accumulation(0)
{
cout<<date<<"\t#"<<id<<"is created"<<endl;
}
void SavingsAccount::record(int date,double amount)
{
accumulation=accumulate(date);
lastDate=date;
amount=floor(amount*100+0.5)/100;
balance+=amount;
total+=amount;
cout<<date<<"\t#"<<id<<"\t"<<amount<<"\t"<<balance<<endl;
}
void SavingsAccount::deposit(int date,double amount)
{
record(date,amount);
}
void SavingsAccount::withdraw(int date,double amount)
{
if(amount>getBalance())
cout<<"Error:not enough money"<<endl;
else
record(date,-amount);
}
void SavingsAccount::settle(int data)
{
double interest=accumulate(data)*rate/365;
if(interest!=0)
record(data,interest);
accumulation=0;
}
void SavingsAccount::show() const
{
cout<<"#"<<id<<"\tBalance:"<<balance;
}
![]()