C++程序设计教程(钱能) 课后习题 12.4

觉得这道课后习题涉及的东西挺多的,但是不知道有没有理解对题意
以下是题目

1)创建一个Employee类,该类中有字符数组,表示姓名,街道地址,市,省和邮政编码。把表示构造函数,ChangeName(),Display()的函数原型放在类定义中,构造函数初始化每个成员,Display()函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公用的。
(2)修改上类,将姓名构成类Name,其名和姓在该类中为保护数据成员,其构造函数为接收一个指向完整姓名字符串的指针,其Display()函数输出姓名,然后将Employee类中的姓名成员换成Name类对象。将所有原型化的函数加上成员函数定义,作为类的内部实现文件。构成完整的类库定义,要求类定义与类的成员函数定义分开。

头文件中
#pragma once
#include
using namespace std;
class Name {
public:
	Name(const char*);
	void Changename(const char*);
	void display() { cout << name; }
private:
	char name[20];
};
class Employee {
public:
	Employee(const char*,const char*,const char*,const char*,const char*);
	void ChangeName(const char*);
	void Display();
private:
	Name name;
	char adr[20];
	char shi[20];
	char sheng[20];
	char post[20];
};
mian函数中
#include"标头.h"
#include
Employee::Employee(const char* n,const char* ad, const char* c, const char* cou, const char* p):name(n) {
	//strncpy_s(name, n, sizeof(n));
//	name[sizeof(name) - 1] = '\0';
	strncpy_s(adr, ad, sizeof(adr));
	adr[sizeof(adr) - 1] = '\0';
	strncpy_s(shi, c, sizeof(shi));
	shi[sizeof(shi) - 1] = '\0';
	strncpy_s(sheng, cou, sizeof(sheng));
	sheng[sizeof(sheng) - 1] = '\0';
	strncpy_s(post, n, sizeof(post));
	post[sizeof(post) - 1] = '\0';
}
void Employee::ChangeName(const char* newname){
	name.Changename(newname);
}
void Employee::Display() {
	name.display();
	cout << "/" << adr << "/" << shi << "/" << sheng << "/" << post << endl;
}
Name::Name(const char* na){
	strncpy_s(name, na, sizeof(name));
	name[sizeof(name) - 1] = '\0';
}
void Name::Changename(const char* newname){
	strncpy_s(name, newname, sizeof(name));
	name[sizeof(name) - 1] = '\0';
}
int main() {
	Employee em("Mark Brooks", "5 West St.", "Revere", "CA", "12290");
	em.Display();
	em.ChangeName("Richard Voss");
	em.Display();
}

你可能感兴趣的:(起步中,c++)