当前位置:   article > 正文

类中的封装_类中封装的什么东西

类中封装的什么东西
类通常分为以下两个部分:
类的实现细节;
类的使用方式;



当使用类时,不需要关心其实现细节;
当创建一个类时,才需要考虑其内部实现细节;


装的基本概念:
根据日常生活中的经验: 并不是类的每个属性都是对外公开的
如:女孩子不希望外人知道自己的年龄和身高;
如:一些男孩子不希望别人知道自己会尿床;
而一些类的属性是对外公开的
如:人类的姓名,学历,国籍等;
因此 ,需 在类的 表示法中定义属性和行为的公开级别
类似文件系统中文件的权限;

C++中类的封装:

员变量
C++ 中用于表示类属性的变量;
员函数
C++ 中用于表示类行为的函数;
C++ 中可以给成员变量和成员函数定义访问级别
public
成员变量和成员函数可以在类的内部和外界访问和调用;
private
员变量和成员函数只能在类的内部被访问和调用;

类成员的作用域:

类成员的作用域都只在类的内部,外部无法直接访问
员函数可以直接访问成员变量和调用其它成员函数;
类的外部可以通过类变量访问 public 成员
类成员的作用域与 访 问级别没有关系;

C++中用struct定义的类的所有成员默认为public


类的真正形态:

struct C 语言中已经有了自己的含义,只能继续兼容;
C++ 中提供了新的关键字 class 用于类定义;
class struct 的用法是完全相同的;

在用 struct 定义类时,所有成员的默认属性为 public
在用 class 定义类时,所有成员的默认属性为 private



个运算类的实现:

#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

#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;
}
#include <stdio.h>
#include "Operator.h"
int main(int argc, char *argv[])
{
    Operator op;
    double r = 0;
    op.setOperator('/');
    op.setParameter(8, 4);
    if( op.result(r) )
    {
        printf("Result is %f\n", r);
    }   
    printf("Press any key to continue...");
    getchar();
    return 0;
}

类的精华在于封装

将实现细节和使用方式相分离;
C++ 中通过 public private 实现类的封装
public 成员可以通过变量被外界访问;
private 成员只能够在类内部使用;
类的定义和实现可以分开到不同的文件中





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/392695
推荐阅读
相关标签
  

闽ICP备14008679号