加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++ — 简单的程序分离类定义和主函数、实现栈的操作和创建Employee类

(2013-03-30 20:49:27)
标签:

成员

变量

it

分类: C 编程
1、C++ — 简单的程序分离类定义和主函数
//cat.h
#ifndef CAT
#define CAT

#include

class Cat
{
public:
int GetAge();
void SetAge(int age);
void Meow();         //喵喵叫
protected:
int itsAge;
};

#endif


//cat.cpp

#include "cat.h"
int Cat::GetAge()
{
return itsAge;
}

void Cat::SetAge(int age)
{
itsAge=age;
}

void Cat::Meow()
{
cout <<"Meow.\n";
}
//cat.h
#include "cat.h"
void main()
{
Cat frisky;
frisky.SetAge(5);
frisky.Meow();
cout <<"frisky is a cat who is "
<<frisky.GetAge()
<<" years old.\n";
frisky.Meow();
}
2、C++ — 实现栈的操作(运用链表、数据操作先进后出)
//stack.h
#ifndef STACK
#define STACK
struct Node{//定义节点结构
int a;
Node* next;
};

class Stack{
public:
Stack();
~Stack();
void Put(int item);
int Get();
protected:
Node* head;//保护链表的头指针
};
#endif

//stack.cpp
#include "stack.h"
#include
#include
Stack::Stack():head(NULL){} //之前设置头指针为空,此为构造函数,在类的对象创建时将被自动调用
void Stack::Put(int item){ //数据进入栈
Node* p = new Node; //新建一个节点内存
p->a = item; //给节点里面的数据域赋值为 item
p->next = head; //使指针head指向刚刚新建的节点的数据域里面,使之构成一个链表
head = p; //把指针 p 地址传给head,因为数据先进后出
}

Stack::~Stack(){ //析构函数,释放内存,归给还操作系统,下次再继续免费申请。。。
for(Node* p=head; p;){ //从头指针开始,将头指针地址赋值给p
Node* t = p; //再继续将p指针的地址给t
p=p->next; //p指针指向下一个结点
delete t; //不断的delete
}
}

int Stack::Get()
{
if(!head){ //从头指针开始出栈,否则错误
cerr <<"error access stack underflow.\n";
exit(1);
}
int result = head->a; //将栈里面的数据赋值给 result 变量
Node* p = head; //把head 指针地址给p指针
head = head->next; //head 指针移向下一个结点
delete p; //数据已经出栈后,就应该把该节点delete啦
return result; //返回该数据,用于数据的出栈啊
}
//main.cpp
#include
#include "stack.h"

void main()
{
  Stack sta;//创建一个对象 sta

  sta.Put(10); //把数据 10 放入栈
  sta.Put(12); //把数据 12 放入栈
  sta.Put(14); //把数据 14 放入栈

  cout <<sta.Get() <<endl;//给最后的一个数据出栈
  cout <<sta.Get() <<endl;//给最后的一个数据出栈
}

3、C++ — 创建Employee类,成员函数ChangeName和Display

//employee.h

#ifndef EMPLOY
#define EMPLOY
class Name
{
public:
Name(char* n);
void Display();
void ChangeName(char* n);
protected:
char firstName[20];
char lastName[20];
};
class Employ
{
public:
Employ(char* n,char* a,char* c,char* s,char* z);
void ChangeName(char* n);
void Display();
protected:
Name name;
char addr[40];
char city[20];
char state[20];
char zip[10];
};
#endif

//employee.cpp
#include
#include "employee.h"
#include
Name::Name(char* n){
  ChangeName(n);
}
void Name::Display(){
  cout <<firstName <<" " <<lastName <<endl;
}
void Name::ChangeName(char* n){
  char* p=n;
  int i;
  for(i=0; i<19; i++){
    if(*p==' '||*p=='\0')
      break;
    firstName[i]=*p++;
  }
  firstName[i]='\0';
  if(*p=='\0'){
    lastName[0]='\0';
    return;
  }
  while(*p==' ') p++;
  for(i=0; i<19; i++){
    if(*p==' '||*p=='\0')
      break;
    lastName[i]=*p++;
  }
  lastName[i]='\0';
}

Employ::Employ(char* n,char* a,char* c,char* s,char* z) :name(n)
{
  strncpy(addr,a,40);
  addr[39]='\0';
  strncpy(city,c,20);
  city[19]='\0';
  strncpy(state,s,20);
  state[19]='\0';
  strncpy(zip,z,10);
  zip[9]='\0';
}
void Employ::ChangeName(char* n){
  name.ChangeName(n);
}
void Employ::Display(){
  name.Display();
  cout <<addr <<" " <<city <<endl
       <<state <<" "
       <<zip <<endl;
}

//main.cpp
#include "employee.h"
void main()
{
Employ em("Mark Brooks","5 West St.","Revere","CA","12290");
em.Display();
em.ChangeName("Richard Voss");
em.Display();
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有