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