8.C++-类的关键字

在之前学习的C++章节里,可以发现结构体越来越不像C语言里的结构体了

比如,里面可以定义函数,可以定义private/public,结构体名还可以指向父类.

 

但是C++需要兼容C,所以C++中便提供了新的关键字class用来定义类

class

关键字classstruct用法完全相同(struct A == class B)

classstruct区别(如下图)

struct,所有成员的默认访问级别为pubilc

class,所有成员的默认访问级别为private

 

 

在以后的学习里,就专门使用class来定义类了,接下来做一个类

小实例-开发一个用于四则运算的类

-提供setOperator函数设置运算类型

-提供setParameter函数设置运算参数

-提供result函数进行运算

  •   返回值表示运算的合法性
  •   通过引用参数返回结果

通过operator.h头文件声明类,通过operator.cpp源文件来实现类

operator.h文件 

#ifndef _OPERATOR_H_
#define _OPERATOR_H_

class Operator
{
 private:
  char   memOp;
  double memP1;
  double memP2;
public: bool SetOperator(char Op); void SetParameter(double P1,double P2); bool result(double & val); }; #endif

 

operator.cpp文件

#include "operator.h"

bool Operator::SetOperator(char Op)
{
   bool err=false;  
   if(Op == '+'||Op == '-'||Op == '*'||Op == '/')
   {
     memOp= Op;
     err=true;
   }
    return err;
}

void Operator::SetParameter(double P1,double P2)
{
  memP1=P1;
  memP2=P2;
}
bool Operator::result(double & val) { bool err=true; switch(memOp) { case '+': val = memP1+memP2; break; case '-': val = memP1-memP2; break; case '*': val = memP1*memP2; break; case '/': if( (-0.000000001 < memP1) && (memP2 < 0.000000001) ) { err= false; } else { val = memP1/memP2; } break; default: err=false; break; } return err; }

 

Test.cpp文件

#include <stdio.h>
#include "operator.h"    

int main()
{
    Operator Op;
    double val=0;   

    Op.SetOperator('/');  
    Op.SetParameter(9,3);

    if(Op.result(val))
    {
      printf("val=%lf\n",val);
    }
    else
    {
     printf("CALL ERR\n");
    }
   return 0;
}

 

编译运行:

 

 

小结

  • C++引进了新的关键字class定义类
  • structclass区别在于默认访问级别不同
posted @ 2018-03-08 23:31  诺谦  阅读(2159)  评论(0编辑  收藏  举报