• 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
    ",val);
        }
        else
        {
         printf("CALL ERR
    ");
        }
       return 0;
    }

    编译运行:

     

    小结

    • C++引进了新的关键字class定义类
    • structclass区别在于默认访问级别不同
  • 相关阅读:
    基本内置类型
    多维数组
    数组
    迭代器
    标准库类型 vector
    标准库类型 string
    运算符优先级表
    类型转换
    sizeof 和逗号运算符
    位运算符
  • 原文地址:https://www.cnblogs.com/lifexy/p/8531568.html
Copyright © 2020-2023  润新知