欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

8.C++-类的关键字

程序员文章站 2022-09-11 20:29:12
在之前学习的C++章节里,可以发现结构体越来越不像C语言里的结构体了 比如,里面可以定义函数,可以定义private/public,结构体名还可以指向父类. 但是C++需要兼容C,所以C++中便提供了新的关键字class用来定义类 class 关键字class和struct用法完全相同(struct ......

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

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

 

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

class

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

classstruct区别(如下图)

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

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

 8.C++-类的关键字

 

在以后的学习里,就专门使用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;
}

 

编译运行:

 8.C++-类的关键字

 

小结

  • C++引进了新的关键字class定义类
  • structclass区别在于默认访问级别不同