C++中的类---封装与访问控制
//*******************************************************************************************
//类的封装:
/*基本概念:
1.封装是面向对象程序设计最基本的特性,把数据(属性)和函数(操作)合成一个整体,这在计算机世界中就是用类和对象实现的;
--封装:也就是把客观事物封装成为抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏;
——————备注:有两层含义:把属性和方法进行封装;对属性和方法进行访问控制。
2.类成员的访问控制:
C++中类的封装:
成员变量:C++中用于表示类属性的变量;
成员函数:C++中用于表示类行为的函数;
在C++中可以给成员变量和成员函数定义访问级别:
public 修饰成员变量和成员函数可以在类的内部和类的尾部被访问;
private 修饰成员变量和成员函数只能在类的内部被访问;
protected 修饰在的成员变量和函数只能在类的内部被访问,用在继承里面;
*/
#include<iostream>
using namespace std;
//求圆的面积:
//类的封装:
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;
}
};
//类做函数参数;
//类封装了成员的变量(属性)和成员函数(方法)
//可以调用类的成员函数;
//引用
void printfCircle01(Mycircle &myc) {
cout << "R01 is :" << myc.getR() << endl;
cout << "S01 is :" << myc.getS()<< endl;
}
//指针
void printfCircle02(Mycircle *pc) {
cout << "R is : " << pc->getR() << endl;; //和结构体不一样:不仅可以调用类的属性(对象),还能调用类的方法;
//类封装了成员变量和成员函数;
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);//类指针作为函数形参;
c1.setR(20);
printfCircle01(c1);//类变量作为函数形参;
return 0;
}
分别将形参设定为:类的引用,和类的指针;
//*****************************************************************************************************************************************************
类的控制访问:
#include<iostream>
using namespace std;
class MyAdcircle {
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 的;
int main()
{
MyAdcircle c1, c2;
//c1.m_r = 10; //写在了类的外部,不可用;
c1.setR(10); //只能通过public的接口去操作类的内容;
//private 相当于你的账户密码;public 相当于你的名字;
cout << "R is : " << c1.setR(11) << endl;
return 0;
}
/*
struct和class关键字区别
在用struct定义类时,所有成员的默认属性为public;
在用class定义类时,所有成员的默认属性为private;
*/