<C++基础学习二十四>封装与访问控制

摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)。

   基本概念:

  1、封装是面向对象程序设计最基本的特性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中就是用类和对象实现的;

  --封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或对象操作,对不可信的进行信息隐藏;

  有两层含义:把属性和方法进行封装;对属性和方法进行访问控制。

  2、类成员的访问控制:

  C++中类的封装:

    成员变量:C++中用于表示类属性的变量;

    成员函数:C++中用于表示类行为的函数;

  在C++中可以给成员变量和成员函数定义访问级别:

  public:修饰成员变量和成员函数可以在类的内部和类的尾部被访问;

  private:修饰成员变量和成员函数只能在类的内部被访问;

  protected:修饰在的成员变量和函数只能在类的内部被访问,用在继承里面;

下面看一个程序例子:

#include <iostream>
using namespace std;
//Find the area of a circle
//Class encapsulation
class Mycircle{
private:
    double m_r;//attribute,Member variables
    double m_s;
public:
    double setR(double r){
        m_r = r;
        return m_r
    }
    double getR(){
        return m_r;
    }
    double getS(){
        m_s = 3.14 * m_r * m_r;
        return m_s;
    }

}

//Quote
void printfCircle01(Mycircle &myc){
    cout << "R01 is" << myc.getR() << endl;
    cout << "S01 is" << myc.getS() << endl;
}

//Pointer
void printfCircle02(Mycircle *pc){
    cout << "R is" << pc->getR() << endl;
    //Classes encapsulate member variables and member functions
    cout << "S is" << pc->getS() << endl;
}

int main(){
    Mycircle c1,c2;
    c1.setR(10);
    cout << "c1.S:" << c1.getS() << endl;

    c1.setR(11);
    printfCircle02(&c1)//Class pointer as function parameter

    c1.setR(20);
    printfCircle01(c1);//Class variables as function parameters

    return 0;
}

   分别将形参设定为:类的引用和类的指针。

  struct和class关键字区别:

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

posted @ 2019-01-19 21:03  daisy_ai  阅读(201)  评论(0编辑  收藏  举报