4-1 C++属性封装之初始封装
上图:违背了面向对象的基本思想,修改如下:
上图中:age设置为1000而不能提示错误,下图中可以提示:
上图中:轮子个数只希望读而不希望写时,可以这样;
4-2 C++属性封装代码演示
#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
class Student
{
public:
void setName(string _name)
{
m_strName=_name;
}
string getName()
{
return m_strName;
}
void setGender(string _gender)
{
m_strGender=_gender;
}
string getGender()
{
return m_strGender;
}
void initScore()//不初始化容易出问题
{
m_iScore=0;
}
int getScore()
{
return m_iScore;
}
void study(int _score)
{
m_iScore += _score;
}
private:
string m_strName;
string m_strGender;
int m_iScore;
};
int main()
{
Student a;
a.setName("zhuning");
a.setGender("女");
a.initScore();
a.study(5);
cout<<a.getName()<<endl<<a.getGender()<<endl<<a.getScore()<<endl;
system("pause");
return 0;
}
4-3 单元巩固
定义一个Student类,包含名字一个数据成员,使用get和set函数封装名字这个数据成员。在main函数中通过new实例化对象,并打印其相关函数。
#include <iostream>
#include <string>
using namespace std;
/**
* 定义类:Student
* 数据成员:m_strName
* 数据成员的封装函数:setName()、getName()
*/
class Student
{
public:
// 定义数据成员封装函数setName()
void setName(string _name)
{
m_strName=_name;
}
// 定义数据成员封装函数getName()
string getName()
{
return m_strName;
}
//定义Student类私有数据成员m_strName
private:
string m_strName;
};
int main()
{
// 使用new关键字,实例化对象
Student *str = new Student();
// 设置对象的数据成员
str->setName("慕课网");
// 使用cout打印对象str的数据成员
cout<<str->getName()<<endl;
// 将对象str的内存释放,并将其置空
delete str;
str=NULL;
return 0;
}