美文网首页
C++类的关键字

C++类的关键字

作者: nethanhan | 来源:发表于2017-10-14 10:28 被阅读0次

    类的关键字


    • struct 在C语言中已经有了自己的含义,必须继续兼容

    • 在C++中提供了新的关键字class用于类定义

    • class和struct的用法是完全相同的

    • structclass 有什么区别呢?

      • 在用struct定义类时,所有成员的默认访问级别为public
      • 在用class定义类时,所有成员的默认访问界别为private

    例如这样:

    struct A
    {
        //defualt to public
        int i;
        //defualt to public
        int getI()
        {
            return i;
        }
    };
    
    class B
    {
        //defualt to private
        int i;
        //defualt to private
        int getI()
        {
            return i;
        }
    };
    

    类的真正形态

    • 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
    

    Operator.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;
    }
    

    相关文章

      网友评论

          本文标题:C++类的关键字

          本文链接:https://www.haomeiwen.com/subject/xwdxuxtx.html