【学习笔记】C++ 核心编程(四)类和对象(上)内容来自小破站《黑马程序员C++》复习自用
- 4 类和对象
- 4.1 封装
- 4.1.1 封装的意义(一)
- 4.1.1 封装的意义(二)
- 4.1.2 struct和class的区别
- 4.1.3 成员属性设置为私有
C++面向对象的三大特性:封装、继承、多态
C++认为,万事万物皆为对象,对象上有其属性和行为
例如:
人可以作为对象,属性有姓名、年龄、身高、体重,行为有走、跑、唱歌、干饭;
车可以作为对象,属性有轮胎、车灯、方向盘,行为有载人、放音乐、飘逸;
具有相同性质的对象,我们可以抽象的成为类,人属于人类,车属于车类。
封装是C++面向对象的三大特性之一。
- 将属性和行为作为一个整体,表现生活中的事务
- 将属性和行为加以权限进行控制
语法:class 类名{ 访问权限: 属性 / 行为 };
需求:设计一个圆类,求圆的周长
#include
using namespace std;
//圆周率
const double PI = 3.14;
//设计一个圆类,求圆的周长
//求圆的周长: 2*PI*半径
//class代表要设计一个类,类后边紧跟着的就是类名称
class Circle
{
//访问权限
//公共权限
public:
//属性:半径
int m_r;
//行为:获取圆的周长
double calculateZC()
{
return 2 * PI * m_r;
}
};
int main() {
//通过圆类,来创建具体的圆(对象)
//实例化:通过一个类,创建一个对象的过程
Circle c1;//Circle是类,c1是具体对象名字
//给圆对象的属性进行赋值
c1.m_r = 10;
cout << "圆的周长为:" << c1.calculateZC() << endl;
system("pause");
return 0;
}
练习案例
需求:设计一个学生类,属性有姓名和学号,可以给姓名和学号赋值,可以显示学生的姓名和学号。
#include
using namespace std;
#include
//学生类
class student {
public: //公共权限
//属性
string m_name;//姓名
int m_id;//学号
//行为:显示姓名学号
void showStudent() {
cout << "姓名:" << m_name << endl;
cout << "学号:" << m_id << endl;
}
};
int main() {
//创建一个具体的学生(实例化对象)
student s1;
s1.m_name = "Siri";
s1.m_id = 2025302040;
//显示学生信息
s1.showStudent();
system("pause");
return 0;
}
除了这种赋值方式,还有一种,可以通过函数的行为来给姓名赋值。
#include
using namespace std;
#include
//学生类
class student {
public: //公共权限
//属性
string m_name;//姓名
int m_id;//学号
//给姓名赋值
void setName(string name) {
m_name = name;
}
void setID(int id) {
m_id = id;
}
//行为:显示姓名学号
void showStudent() {
cout << "姓名:" << m_name << endl;
cout << "学号:" << m_id << endl;
}
};
int main() {
//创建一个具体的学生(实例化对象)
student s1;
s1.setName("Siri");
s1.setID(2025302040);
//显示学生信息
s1.showStudent();
system("pause");
return 0;
}
》》》专业术语扩展:》》》
- 类中的属性和行为,统一成为成员;
- 属性,也称成员属性、成员变量;
- 行为,也称成员函数、成员方法;
类在设计的时候,可以把属性和行为放在不同的权限下,加以控制,但是什么时候用什么权限
访问权限有三种:
- public 公共权限 类内可以访问,类外可以访问
- protected 保护权限 类内可以访问,类外不可以访问(儿子也可以访问父亲中的保护内容)
- private 私有权限 类内可以访问,类外不可以访问(儿子不可以访问父亲中的私有内容)
#include
using namespace std;
class Persion
{
public: //公共权限
string m_Name; //姓名
protected: //保护权限
string m_Car; //汽车
private:
int m_Password; //yhk密码
public: //也可以用private:都属于类内,但是void func()也无法访问了
void func()
{
m_Name = "张三";
m_Car = "拖拉机";
m_Password = 123456; //类内可以访问
}
};
int main()
{
//实例化一个具体的对象
Persion p1;
p1.m_Name = "里斯";
p1.m_Car = "Benz"; //保护权限内容,在类外无法访问
p1.m_Password = 222; //私有权限内容,在类外无法访问
system("pause");
return 0;
}
4.1.2 struct和class的区别
在C++中struct和class唯一的区别就在于【默认的访问权限不同】
- struct 默认权限为公共 (死抓科特)
- class 默认权限为私有 (克拉斯)
#include
using namespace std;
class C1 //在上边没有写任何的public权限
{
int m_A;//默认权限 是 私有
};
struct C2
{
int m_A;//默认权限 是 公共
};
int main() {
C1 c1;
C2 c2;
c1.m_A = 100;
c2.m_A = 100;
system("pause");
return 0;
}
4.1.3 成员属性设置为私有
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)