类的封装、
1)封装是main想对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类和对象实现的
封装就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息的隐藏
备注:有两层含义(把属性和方法进行封装 对属性和方法进行访问控制)
2)类成员的访问控制
C++中的封装:成员变量,C++中用于表示类属性的变量
成员函数,C++中用于表示类行为的函数
在C++中,可以给成员变量和成员函数定义访问级别
public修饰成员变量和成员函数可以在类的内部和类的外部被访问
private修饰成员变量和成员函数,只能在类的内部被访问,不能在类的外部访问
protected修饰成员变量和成员函数,只能在类的内部被访问,不能在类的外部访问
//类的封装
#include<iostream>
using namespace std;
//求圆的面积
//封装有两层含义
//1、把属性和方法进行封装
//2、对属性和方法进行访问控制
class MyCircle
{
public:
double m_r; //成员变量
double m_s;
public:
double getR() //成员函数
{
return m_r;
}
double SetR(double r)
{
m_r = r;
return m_r;
}
double getS()
{
m_s = 3.14*m_r*m_r;
return m_s;
}
private:
protected:
};
void printfC1(MyCircle *p)
{
cout << "R1="<<p->getR()<< endl;
cout << "S1="<<p->getS()<< endl;
}
void printfC2(MyCircle &p)
{
cout << "R2=" << p.getR() << endl;
cout << "S2=" << p.getS() << endl;
}
void printfC3(MyCircle p)
{
cout << "R3=" << p.getR() << endl;
cout << "S3=" << p.getS() << endl;
}
void main()
{
MyCircle c1,c2;
c1.SetR(10);
cout<<"S="<<c1.getS()<<endl;
c2.SetR(20);
printfC1(&c2);
printfC2(c1);
printfC3(c1);
system("pause");
}
//类的访问控制
#include<iostream>
using namespace std;
//求圆的面积
//封装有两层含义
//1、把属性和方法进行封装
//2、对属性和方法进行访问控制
class MyCircle
{
private:
double m_r; //成员变量
double m_s;
public:
double getR() //成员函数
{
return m_r;
}
double SetR(double r)
{
m_r = r;
return m_r;
}
double getS()
{
m_s = 3.14*m_r*m_r;
return m_s;
}
private:
protected:
};
void main()
{
MyCircle c1;
//cout << c1.m_r<< endl;//外部不可以访问用private声明的成员变量
cout<<c1.SetR(10)<<endl;//可以通过私有成员变量和外部的公共接口改变私有成员变量的属性
system("pause");
}