標籤:

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+樹做索引?

TAG:C | MySQL | Nginx |