学习:类和对象——封装

C++面向对象的三大特性为:封装继承多态

例如:人属于人类,车属于车类....


封装的意义:

封装是C++面向对象三大特性之一

封装的意义一:

1、将属性和行为作为一个整体,表现生活中的事物
2、将属性和行为加以权限控制

语法: class 类名{ 访问权限: 属性 / 行为 };

示例1:设计一个圆类,求圆的周长

#include<iostream>


using namespace std;

const double PI = 3.14;
class Circle {

public:
	int r;

	double calcuate() {
		return 2 * r * PI;
	}

};

int main() {
	
	Circle c1;
	c1.r = 5;
	cout << c1.calcuate() << endl;
	system("pause");
	return 0;
}

封装意义二:

类在设计时,可以把属性和行为放在不同的权限下,加以控制

访问权限有三种:

1、public 公共权限
2、protected 保护权限
3、private 私有权限

#include<iostream>
#include<string>

using namespace std;

class Priv {
private:
	string peroson_name;

protected:
	string car_name;

public:
	string pass;
};

int main() {

	Priv v1;
	v1.pass = "123"; //由于属性的访问权限是公共的 所以可以访问
	//v1.car_name = "123"; //由于属性的访问权限是受保护的的 所以无法访问 报错
	//v1.person_name = "123";//由于属性的访问权限是私人的 所以无法访问 报错

	system("pause");
	return 0;
}

struct和class区别

在C++中 struct和class唯一的区别就在于 默认的访问权限不同

在struct中,默认访问的权限为public

在class中,默认访问的权限为private

#include<iostream>
#include<string>

using namespace std;
class C1
{
	int  m_A; //默认是私有权限
};

struct C2
{
	int m_A;  //默认是公共权限
};

int main() {

	C1 c1;
	//c1.m_A = 10; //错误,访问权限是私有

	C2 c2;
	c2.m_A = 10; //正确,访问权限是公共

	system("pause");

	return 0;
}

成员属性设置为私有:

优点1:将所有成员属性设置为私有,可以自己控制读写权限

优点2:对于写权限,我们可以检测数据的有效性

用自己的话来说:我们是程序员,那么所有的东西都应该被我们自己掌控,而不是把操作权给别人

示例:

#include<iostream>
#include<string>

using namespace std;

class Person {
public:
	void set_my_age(int age) {
		if (age < 0 || age> 100) { //传入的数据自己还可以进行相应的判断,是否为合法
			cout << "年龄超过范围,默认设置为0" << endl;
			this->my_age = 0;
			return;
		}
		this->my_age = age;
		cout << "年龄设置成功" << endl;
	}

	void echo_my_age() {
		cout << "年龄为:" << this->my_age << endl;
	}

	//其他的以此类推,主要这里的学习的思想

private: //成员属性都是自己能操控的
	int my_age;
	string my_name;
	string my_girl;
};

int main() {

	Person p1;
	//p1.set_my_age(100);
	p1.set_my_age(101);
	p1.echo_my_age();


	system("pause");
	return 0;
}
原文地址:https://www.cnblogs.com/zpchcbd/p/11851543.html