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); }; #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定义类
- struct和class区别在于默认访问级别不同
人间有真情,人间有真爱。