C++:属性封装

4-1 C++属性封装之初始封装

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200226190913231.png =300x100?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzQ1MzQw,size_16,color_FFFFFF,t_70)
上图:违背了面向对象的基本思想,修改如下:

在这里插入图片描述
在这里插入图片描述
上图中: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;
}
发布了39 篇原创文章 · 获赞 54 · 访问量 2097

猜你喜欢

转载自blog.csdn.net/qq_42745340/article/details/104522755