Bank.h
#pragma once
#include<iostream>
using namespace std;
class Bank
{
public://構(gòu)造函數(shù)和析構(gòu)函數(shù)
Bank();//構(gòu)造函數(shù)
Bank(int balance);
Bank(int balance, char *name);
Bank(const Bank &p);//拷貝構(gòu)造函數(shù)
~Bank();//析構(gòu)函數(shù)
public://運算符重載
bool operator<(const Bank &p);
bool operator==(const Bank &p);
Bank& operator=(const Bank &p);
public://行為
void save(int money);
void draw(int money);
void show();
public://工具
char *getName();
void setName(char *name);
private://數(shù)據(jù)
char *m_name;
int m_balance;
};
Bank.cpp
#include "stdafx.h"
#include "Bank.h"
using namespace std;
//析構(gòu)和構(gòu)造函數(shù)
//默認(rèn)構(gòu)造函數(shù)
Bank::Bank()
{
m_name = new char[1];
*m_name = '\0';
m_balance = 0;
cout << "默認(rèn)構(gòu)造函數(shù)" << endl;
}
Bank::Bank(int balance, char *name){
m_balance = balance;
m_name = new char[strlen(name) + 1];
sprintf_s(m_name,(strlen(name)+1),name);
cout << m_name << "構(gòu)造函數(shù)" << endl;
}
Bank::Bank(const Bank &p){
if (p.m_balance >= 0 && p.m_name != NULL)
{
m_name = new char[(strlen(p.m_name) + 1)];
sprintf_s(m_name, strlen(p.m_name) + 1, p.m_name);
m_balance = p.m_balance;
}
else {
m_balance = 0;
m_name = new char[1];
*m_name = '\0';
}
cout << m_name << "初始化拷貝構(gòu)造函數(shù)" << endl;
}
Bank::~Bank()
{
delete[] m_name;
m_name = NULL;
}
//行為
void Bank::save(int money){
m_balance += money;
cout << m_name << "存入:" << money << "余額:" << m_balance << endl;
}
void Bank::draw(int money){
m_balance -= money;
cout << m_name << "取出:" << money << "余額:" << m_balance << endl;
}
void Bank::show(){
cout << m_name << "賬戶余額:" << m_balance << endl;
}
//工具
char * Bank::getName(){
//cout << *m_name << endl;
return m_name;
}
void Bank::setName(char *name){
if (m_name)
{
delete[] m_name;
}
if (name==NULL)
{
m_name = new char[1];
*m_name = '\0';
} else {
m_name = new char[strlen(name) + 1];
strcpy_s(m_name,strlen(name)+1,name);
}
m_name = name;
}
main.cpp
// 構(gòu)造析構(gòu)函數(shù)23期92子羽.cpp : 定義控制臺應(yīng)用程序的入口點烟馅。
//
#include "stdafx.h"
#include "Bank.h"
int _tmain(int argc, _TCHAR* argv[])
{
Bank icbc(2000,"ICBC");
icbc.save(1000);
icbc.draw(1000);
icbc.show();
cout << "+++++++++++++++++++" << endl;
//Bank icbc2 = icbc;
Bank icbc2(icbc);
icbc2.save(100);
icbc2.draw(1700);
icbc2.show();
cout << "===================" << endl;
Bank *abc = new Bank(4000,"ABC");
abc->save(1000);
abc->draw(3000);
abc->show();
cout << "<<<<<<<<<<<<<<<<<<" << endl;
Bank *abc2 = new Bank((*abc));
abc2->save(100);
abc2->draw(1900);
abc2->show();
delete abc;
abc = NULL;
delete abc2;
abc2 = NULL;
return 0;
}