C++:封装
一、封装的定义 - 隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法进行有机结合。
函数是封装的一种形式:函数所执行的细节行为被封装在函数体内,被封装的元素隐藏了其实现细节,可调用函数但不可访问函数内部语句。
二、访问权限符
1、public(共有):类外可以访问;
2、private(私有):类外不可访问,继承类亦不可访问;
3、protected(保护):类外不可访问,继承类可访问。
4、作用范围:在该类作用域内,一个访问权限符出现位置起到下一个权限限制符出现位置止。
5、注意:访问权限符本质上是给编译器使用的,数据放在内存中是没有任何限制的。
6、尽量将成员属性设置为私有
a、可有效控制读写权限;
b、可对设置内容加以有限性验证。
三、class和struct的区别(仅默认权限不同)
class默认权限为私有权限;
struct默认权限为共有权限。
#include <iostream>
#include <string>
using namespace std;
class Person
{
public: // 共有
Person(){} // 默认构造函数
Person(string name, int age, string lover) // 有参构造函数
{
this->name = name;
this->age = age;
this->lover = lover;
}
void setname(string name)
{
this->name = name;
}
string getname(void)
{
return this->name;
}
void setage(int age)
{
if(age<0 || age>150) // 有效性验证
{
cout<<"The enter data is wrong..."<<endl;
return;
}
this->age = age;
}
int getage(void)
{
return this->age;
}
void setlover(string lover)
{
this->lover = lover;
}
private: // 私有
string name; // 设置可读(getname)可写(setname)接口函数
int age; // 设置可读(getage)可写(setage)接口函数
string lover; // 设置可写(setlover)接口函数,对外隐藏可读功能
};
void test(void)
{
Person p("Lisi", 29, "lulu");
p.getname();
p.getage();
//p.setlover();
}
int main()
{
test();
return 0;
}