IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++笔记(五)之核心编程(四) -> 正文阅读

[C++知识库]C++笔记(五)之核心编程(四)

类和对象

  • C++面向对象的三大特性为:封装、继承、多态
  • C++认为万物都皆为对象,对象上有属性和行为

例如:

  • 人可以作为对象,属性有姓名、年龄、身高、体重....行为有走、跑、跳、吃饭、唱歌....
  • 车也可以作为对象,属性有轮胎、方向盘、车灯....行为有载人、放音乐、放空调...
  • 具体相同性质的对象,我们可以抽象为类,人属于人类、车属于车类。

一.封装

意义:

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

1.意义一:

  • 在设计类的时候,属性和行为写在一起,表现事物
  • 语法:class 类名(访问权限:属性 / 行为);
  • 说明

  • 属性:成员属性? ?成员变量
  • 行为:成员函数? ?成员方法

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

#include<iostream>
using namespace std;


//公式:C=π*半径*2
const double PI = 3.14;

//class 代表设计一个类,类后面紧跟着的是类的名称
class yuan
{
	//访问权限;公共权限
public:

	//属性--半径
	int m_r;
	//行为--获取圆的周长(行为通常用函数)
	double calculateZC()
	{
		return 2 * PI * m_r;
	}
};

int main()
{
	//通过圆类 来创建一个具体的圆(对象)
	yuan c;
	//给圆对象 的属性进行赋值
	c.m_r = 10;
	//C=2*PI*10=62,8;
	cout << "圆的周长为:" << c.calculateZC() << endl;
	system("pause");
	return 0;
}

? ? 示例二:

设计一个学生类,属性:姓名和学号(可以给姓名和学号赋值可以显示学生的姓名和学号)

#include<iostream>
using namespace std;


//公式:C=π*半径*2
const double PI = 3.14;

//class 代表设计一个类,类后面紧跟着的是类的名称
class student
{
public://公共权限
	//属性
	string name;//姓名
	int num;//学号
	//行为
	//显示学生信息
	void showstudent()
	{
		cout << "姓名:" << name <<endl<< "学号:" << num << endl;
	}
	//输入学生姓名
	void setname(string n)
	{
		name = n;
	}
	//输入学生学号
	void setnum(int m)
	{
		num = m;
	}

};

int main()
{
	student A;//创建一个学生
	A.name = "张三";//给姓名赋值
	A.num = 1;//给学号赋值
	A.showstudent();//显示学生信息

	student B;
	B.setname("李四");//给姓名赋值
	B.setnum(2);//给学号赋值
	B.showstudent();//显示学生信息
	system("pause");
	return 0;
}

?2.意义二

  • 类在设计时,可以把属性和行为放在不同的权限下,加以控制
  • 访问权限有三种
  1. public? ? ? ? ? 公共权限? ? ?成员? ?类内可以访问? 类外也可以访问
  2. protected? ? ?保护权限? ??成员? ?类内可以访问? 类外不可以访问? ? ?子可以访问父中保护内容
  3. private? ? ? ? ?私有权限? ? 成员? ?类内可以访问? 类外不可以访问? ? ?子不可以访问父中私有内容 ? ?
#include<iostream>
using namespace std;

class person
{

public://公共权限
	string p_name;//名字
protected://保护权限
	string p_car;//汽车
private://私有权限
	int p_password;//银行卡密码
public:
	void fun()
	{
		p_name="张三";
		p_car = "拖拉机";
		p_password = 123456;

	}
protected:
	void fun1()
	{
		p_name = "陈无";
		p_car = "货车";
		p_password = 234567;

	}
};

int main()
{
	person A;
	A.p_name = "李四";
	//A.p_car = "奔驰";//保护权限在类外访问不到
	//A.p_password = 234567;//私有权限在类外也访问不到
	A.fun();
	//A.fun1();//保护权限的函数不可以访问
	system("pause");
	return 0;
}

二.struct和class的区别

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

区别:

  • struct默认权限为公共
  • class默认权限为私有
  • #include<iostream>
    using namespace std;
    
    class person
    {
    	string name;
    };
    
    struct student
    {
    	int num;
    };
    
    int main()
    {
    	person A;
    	student B;
    	//A.name = "张三";//报错,class默认为私有权限,类外不可以访问
    	B.num = 1;
    	system("pause");
    	return 0;
    }

三.成员属性设置为私有化?

本质就是创建一个借口,接通类外和类内的私有和保护权限

  • 优点一:将所有成员属性设置为私有,可以自己控制读写权限
  • 优点二:对于写权限,我们可以检测数据的有效性
#include<iostream>
using namespace std;
#include<string>

class person
{
public:    //接口:接通类外与类内的保护和隐私权限
	//写姓名
	void setname(string name)
	{
		m_name = name;
	}
	//读姓名
	string getname()
	{
		return m_name;
	}
	//读年龄
	int getnum()
	{
		m_num = 0;
		return m_num;
	}
	//读爱人
	string setlover(string lover)
	{
		m_lover = lover;
	}
private:
	string m_name;//姓名  可读可写
	int m_num;//年龄    只读
	string m_lover;//爱人  只写
};

int main()
{
	person A;
	A.setname("张三");//成功写入A的姓名
	cout << "A`s name:" << A.getname() << endl;//读取A的名字
	cout << "A`s  num:" << A.getnum() << endl;//读取A的年龄
	A.setlover("艾伦");//写入A的爱人
	system("pause");
	return 0;
}

案例:设计立方体类

  • 设计立方体类
  • 求出立方体的面积和体积
  • 分别用全局函数和成员函数判断两个立方体是否相等

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-07 13:40:26  更:2021-10-07 13:40:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 20:21:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计