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區別在於默認訪問級別不同


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM