zoukankan      html  css  js  c++  java
  • 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区别在于默认访问级别不同
  • 相关阅读:
    Linux驱动入门(三)Led驱动
    Linux驱动入门(二)操作硬件
    mysql表的完整性约束
    数据库操作
    初识数据库
    mysql的安装、启动和基础配置 —— windows版本
    Socket网络编程
    python进阶之多线程(简单介绍协程)
    python进阶多进程(进程池,进程间通信)
    python基础之异常处理
  • 原文地址:https://www.cnblogs.com/lifexy/p/8531568.html
Copyright © 2011-2022 走看看