8.C++-類的關鍵字
在之前學習的C++章節里,可以發現結構體越來越不像C語言里的結構體了
比如,裡面可以定義函數,可以定義private/public,結構體名還可以指向父類.
但是C++需要兼容C,所以C++中便提供了新的關鍵字class用來定義類
class
關鍵字class和struct用法完全相同(struct A == class B)
class與struct區別(如下圖)
在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);};#endifoperator.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
",val); } else { printf("CALL ERR
"); } return 0;}
編譯運行:
小結
C++引進了新的關鍵字class定義類
struct和class區別在於默認訪問級別不同
推薦閱讀:
※MySQL 配置二進位日誌文件
※談談產品分析中涉及到的Mysql 的數據操作
※MySQL | AND運算符
※為什麼有關MongoDB採用B樹索引,以及Mysql B+樹做索引?