16_类的真正形态

1. 类的关键字——class

  • 在用class定义类时,所有成员的默认访问级别为private。
class B
{
    //defualt to private
    int i;
    // defualt to private
    int getI()
    {
        return i;
    }
};

2.类的真正形态

  • C++中的类支持声明实现的分离
  • .h头文件中只有类的声明:成员变量和成员函数的声明,主要作用:表达了用户的需求
  • .cpp源文件中完成类的其它实现:成员函数的具体实现
实例:开发一个用于四则运算的类
需求描述
//Operator.h    

#ifndef _OPERATOR_H_
#define _OPERATOR_H_

class Operator
{
private:
    char mOp;
    double mP1;
    double mP2;
    
public:
    bool setOperator(char op);
    void setParameter(double p1, double p2);
    bool result(double& r);
};

#endif

// Opeartor.cpp
#include "Operator.h"

bool Operator::setOperator(char op)
{
    bool ret = false;
        
    if( (op == '+') || (op == '-') || (op == '*') || (op == '/') )
    {
        ret = true;
        mOp = op;
    }
    else
    {
        mOp = '\0';
    }
        
    return ret;
}

void Operator::setParameter(double p1, double p2)
{
    mP1 = p1;
    mP2 = p2;
}
    
bool Operator::result(double& r)
{
    bool ret = true;
        
    switch( mOp )
    {
        case '/':
            if( (-0.000000001 < mP2) && (mP2 < 0.000000001) )
            {
                ret = false;
            }
            else
            {
                r = mP1 / mP2;
            }
            break;
        case '+':
            r = mP1 + mP2;
            break;
        case '*':
            r = mP1 * mP2;
            break;
        case '-':
            r = mP1 - mP2;
            break;
        default:
            ret = false;
            break;
    }
        
    return ret;
}

// test.cpp
#include <stdio.h>
#include "Operator.h"

int main()
{
    Operator op;
    double r = 0;
    
    op.setOperator('/');
    op.setParameter(9, 3);
    
    if( op.result(r) )
    {
        printf("r = %lf\n", r);
    }
    else
    {
        printf("Calculate error!\n");
    }
    
    return 0;
}

3. 小结

  • C++引用了心得关键字class用于定义类
  • struct和class区别在于默认访问级别的不同
  • C++中的类支持声明实现分离
    • 在头文件中声明类
    • 在源文件中实现类
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,803评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,272评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,906评论 25 709
  • 对了!还有最重要的他们,她们!
    骄杨YANG阅读 1,306评论 0 0
  • 生活不只是眼前的苟且,还有诗和远方。 很多人读到这句话是叹息的,因为他们苟且的活着,没有诗,更没有远方。 很...
    自由无罪阅读 1,747评论 0 0

友情链接更多精彩内容