C++整理类和对象

c语言中结构体包含多种类型的变量,可以通过结构体来定义变量 ,而在c++中,结构体包含了函数,就变成了类,

通过类定义的变量称为对象。

类的命名方法:

eg:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
class Cbookname

 {
 public:
  int page;
  int heigh;
  double hd;
  char name[22];
  char actor[21];
  int show();     //类的成员函数
};
int main ()
{
  Cbookname bookname;   //定义类的变量
  bookname.page=307;   //给类的成员赋值
  bookname.heigh=21;
  bookname.hd=18.45;
  strcpy(bookname.name,"爱的教育");
  strcpy(bookname.actor,"zhang");

  bookname.show();   //调用类的成员函数,可以不用含有参数
  return 0;
}

int Cbookname ::show()  //定义类的成员函数
{
 printf("page=%d,heigh=%d,hd=%lf,name=%s,actor=%s\n",page,heigh,hd,name,actor);
}

不加public的话会显示成员是私有的,这样的话没有权限调用 加了public会认为是公有的。成员可以在其他地方被调用。

在类的函数里可以直接调用类的成员,不用加bookname.

int Cbookname ::show()

用类定义类的变量叫做创建类的对象,或者说实例化一个对象,可以使用‘.’来访问类的对象,和结构体一样,也可以定义一个全局对象,

对象数组

可以类比于结构体数组

测试:

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
class Cbookname
{
 public:
  int page;
  int heigh;
  double hd;
  char name[22];
  char actor[21];
  int show();
};
int main ()
{
  Cbookname bookname[10];
  bookname[0].page=307;   //给类的成员赋值
  bookname[0].heigh=21;
  bookname[0].hd=18.45;
  strcpy(bookname[0].name,"爱的教育");
  strcpy(bookname[0].actor,"zhang");

  bookname[0].show();   //调用类的成员函数,可以不用含有参数
  return 0;
}

int Cbookname ::show()
{
 printf("page=%d,heigh=%d,hd=%lf,name=%s,actor=%s\n",page,heigh,hd,name,actor);
}

成员函数的内容不变,结果如下:

page=307,heigh=21,hd=18.450000,name=爱的教育,actor=zhang

对象的指针

如同结构体的指针

 Cbookname *ip,bookname;

 ip=&bookname;

但可以这样用 (*ip).hd=11;等价于ip->hd

测试

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
class Cbookname
{
 public:
  int page;
  int heigh;
  double hd;
  char name[22];
  char actor[21];
  int show();
};
int main ()
{
  Cbookname bookname,*ip;
  ip=&bookname;
  ip->page=307;   //给类的成员赋值
  (*ip).heigh=21;
  ip->hd=18.45;
  strcpy((*ip).name,"爱的教育");
  strcpy(ip->actor,"zhang");

  (*ip).show();   //调用类的成员函数,可以不用含有参数
  return 0;
}

int Cbookname ::show()
{
 printf("page=%d,heigh=%d,hd=%lf,name=%s,actor=%s\n",page,heigh,hd,name,actor);
}
​
page=307,heigh=21,hd=18.450000,name=爱的教育,actor=zhang

​

对象作为函数的参数:

举例:

class Cbookname bookname,*ip;
 ceshi(&bookname);
ceshi(const char *tt)
{
  printf("%d",tt->hd);
}​

​

或者:

 等同于上面的程序

​
class Cbookname bookname,*ip;
 ceshi(bookname);
ceshi(const char tt)
{
  printf("%d",tt.hd);
}

​

 面向对象的编程

简单理解,c++以及java,php都可以通过类来创建对象,所以用这些语言编程称为面向对象,而c语言不支持类和对象,也就成了面向过程语言。

2)参照book205.cpp程序,增加一个成员函数Level,Level函数根据超女资料,判断超女的级别,级别的判断标准如下:

妃子:(1)年龄18-25岁;(2)身高165-178cm;(3)身材火辣;(4)颜值漂亮。

宫女:(1)年龄18-30岁;(2)身高160-165cm;(3)身材火辣或者普通;(4)颜值一般。

杂役:(1)年龄35-40岁;(2)身高155-165cm;(3)身材普通或者飞机场;(4)颜值一般。

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
class Cgirl
{
 public:
  int age;      //年龄
  int heigh;    //身高
  char aa[22];
  char bb[22];      // 0-妃子,1-宫女,2-杂役,3-不被录用
  int level();
};

int main()
{
  Cgirl girl;
  girl.age=22;
  girl.heigh=168;
  strcpy(girl.aa,"火辣");
  strcpy(girl.bb,"漂亮");
  girl.level();
  if(girl.level()==0)
   printf("当妃子\n");

  if(girl.level()==1)
   printf("当宫女\n");

  if(girl.level()==2)
   printf("当杂役\n");

   if(girl.level()==3)
   printf("不合格\n");
  return 0;
}
int Cgirl ::level()
{
    if(((age>18)  && (age<25) )      &&
    ((heigh>165)   && (heigh<178))    &&
    ((strcmp(aa,"火辣")==0)   )     &&
    ((strcmp(bb,"漂亮")==0)   ))

    return 0;

   if(((age>18)    && (age<30))   &&
    ((heigh>160) && (heigh<165)) &&
    (((strcmp(aa,"火辣")==0))||((strcmp(aa,"普通")==0))&&((strcmp(bb,"漂亮")==0))))

      return 1;

    if(((age>35)    && (age<40))   &&
    ((heigh>155) && (heigh<160)) &&
    (((strcmp(aa,"普通")==0))||((strcmp(aa,"飞机场")==0))&&((strcmp(bb,"一般")==0))))

    return 2;

    return 3;
}
当妃子

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值