C++ Primer Plus (第六版)编程练习记录(chapter10 对象和类)

本文记录了C++ Primer Plus第六版中关于对象和类的编程练习,涵盖了类的设计与实现,包括银行帐户类、简单的类定义、golf类重构、Sales类转换、customer结构栈操作、自定义类如Plorg的操作以及List类的实现与应用。通过这些练习,深入理解C++中类和对象的概念以及如何进行面向对象编程。
摘要由CSDN通过智能技术生成

1.为复习题5描述的类提供方法定义,并编写一个小程序来演示所有的特性。
复习题5:定义一个类来表示银行帐户。数据成员包括储户姓名、账号(使用字符串)和存款。成员函数执行如下操作:
● 创建一个对象并将其初始化;
● 显示储户姓名、账号和存款;
● 存入参数指定的存款;
● 取出参数指定的款项。

//bank.h:定义类成员及函数
#ifndef BANK_H_
#define BANK_H_

#include <string>
using namespace std;

class BankAccount
{
   
public:
	BankAccount();//默认构造函数
	BankAccount(const char* str, string id, int ban);//自定义的重载构造函数
	~BankAccount();//析构函数
	void showinfo() const;
	void deposit(const int num1);
	void withdraw(const int num2);
private:
	string name;
	string id;
	double banlance;
};
#endif // !BANK_H_
//bank.cpp:定义类中的函数
#include <iostream>
#include "bank.h"

BankAccount::BankAccount()
{
   
	name = "Unknown user";
	id = "00000000000";
	banlance = 0;
}
BankAccount::BankAccount(const char* str,string acc,int ban)	
{
   
	name = str;
	banlance = ban;
	id = acc;
}

BankAccount::~BankAccount()
{
   
}

void BankAccount::showinfo() const
{
   
	cout << "The infomation below is about the account:\n";
	cout << "User: " << name << endl;
	cout << "ID: " << id << endl;
	cout << "Banlance: " << banlance << endl;
}

void BankAccount::deposit(const int num1)
{
   
	if (num1 > 0)
	{
   
		banlance += num1;
		cout << "Deposit " << num1 << " yuan.\n";
	}
	else
		cout << "Negative numbers are not allowed.\n";
}

void BankAccount::withdraw(const int num2)
{
   
	if (num2 > banlance)
		cout << "Cannot be greater than balance.\n";
	else if (num2<banlance && num2 > 0)
	{
   
		banlance -= num2;
		cout << "Withdraw " << num2<< " yuan.\n";
	}
	else
		cout << "Negative numbers are not allowed.\n";
}
/* *************************************************
* 文件名:
* 创建人:px
* 创建时间:2020/4/5
* 描述:演示程序
************************************************* */
#include <iostream>
#include "bank.h"

int main()
{
   
	BankAccount pep1;
	BankAccount pep2=BankAccount("px","12345677888" ,200);
	pep1.showinfo();
	pep2.showinfo();
	pep2.deposit(500);
	pep2.withdraw(200);
	pep2.showinfo();
	return 0;
}

2.下面是一个非常简单的类定义:

#include <string>
using namespace std;
class Person
{
   
public:
	Person() {
    lname = "";fname [0]= '\0'; };
	Person(const string& ln, const char* fn = "Heyyou");
	~Person();
	void Show() const;
	void Formashow() const;
private:
	static const int LIMIT = 25;
	string lname;
	char fname[LIMIT];
};

它使用了一个string对象和一个字符数组,让您能够比较它们的用法。请提供未定义的方法的代码,以完成这个类的实现。再编写一个使用这个类的程序,它使用了三种可能的构造函数调用(没有参数、一个参数和两个参数)以及两种显示方法。下面是一个使用这些构造函数和方法的例子:

int main()
{
   
	Person one;
	Person two("Smythecraft");
	Person three("Dimwiddy", "Sam");
	one.Show();
	cout << endl;
	one.Formashow();
}
//person.h
#ifndef PERSON_H_
#define PERSON_H_

#include <string>
using namespace std;
class Person
{
   
public:
	Person() {
    lname = "";fname [0]= '\0'; };
	Person(const string& ln, const char* fn = "Heyyou");
	~Person();
	void Show() const;
	void Formashow() const;
private:
	static const int LIMIT = 25;
	string lname;
	char fname[LIMIT];
};
#endif // !PERSON_H_
//person.cpp
#include <iostream>	
#include <cstring>
#include "person.h"

Person::Person(const string& ln, const char* fn)
{
   
	lname = ln;
	int count = 0;
	strcpy_s(fname, fn);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值