C++核心编程类和对象详解
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容介绍了"C++核心编程类和对象详解"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录1.封装
千家信息网最后更新 2025年01月19日C++核心编程类和对象详解
本篇内容介绍了"C++核心编程类和对象详解"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
目录
1.封装
1.1封装的意义
封装意义一:
封装意义二
1.2 struct 和 class 区别
1.3 成员属性设置为私有
C++面向对象三大特性:封装、继承、多态
1.封装
1.1封装的意义
将属性和行为作为一个整体
将属性和行为加以权限控制
封装意义一:
语法:class 类名{ 访问权限: 属性 / 行为 };
//实例1#define _CRT_SECURE_NO_WARNINGS 1//求圆的周长#includeusing namespace std;#define pi 3.14class circle{public: int m_d;//直径 double calculate() { return pi*m_d; }};int main(){ circle c1; c1.m_d = 10; cout << "圆周长为" << c1.calculate() << endl; system("pause"); return 0;}
//实例2#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;#include class Student{public: string m_name; int m_num; void showStudent() { cout << " 姓名:" << "\t" << m_name << " 学号:" << m_num << endl; } void setname(string name) { m_name = name; } void setnum(int num) { m_num = num; }};int main(){ Student s1; s1.setname("zhangsan"); s1.setnum(2001); s1.showStudent(); Student s2; s2.setname("lisi"); s2.setnum(2002); s2.showStudent(); system("pause"); return 0;}
总结:类中的 属性 和 行为 统一称为 成员
类中的 属性 又称为 成员属性 成员变量
类中的 行为 又称为 成员函数 成员方法
封装意义二
访问权限有三种
公共权限: public 成员类内可以访问,类外可以访问
保护权限: protected 成员类内可以访问,类外不可以访问 儿子可以访问父亲中的保护内容
私有权限: private 成员类内可以访问,类外不可以访问 儿子不可以访问父亲中的保护内容
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;#include class Student{public: string m_name;protected: int m_num;private: int m_age;public: void func() { m_name = "lili"; m_num = 1; m_age = 30; }private: void func1() { m_name = "lili"; m_num = 1; m_age = 30; }};int main(){ Student s1; s1.m_name = "lilllll"; //s1.m_num = 2;//不可访问 //s1.m_age = 20;//不可访问 s1.func(); //s1.func1();//不可访问 system("pause"); return 0;}
1.2 struct 和 class 区别
在C++中 struct 和 class 区别在于 默认的访问权限不同
struct 默认权限为公共
class 默认权限为私有
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;class C1{ string m_a;};struct C2{ string m_b;};int main(){ //C1 c1; //c1.m_a = "lili";//不可访问 C2 c2; c2.m_b = "lili"; system("pause"); return 0;}
1.3 成员属性设置为私有
优点:
将所有成员属性设置为私有,可以自己控制读写权限
对于写权限,我们可以检测数据的有效性
#define _CRT_SECURE_NO_WARNINGS 1#include#include using namespace std;class C1{public: void setname(string name) { m_name = name; } string getname() { return m_name; } int getnum() { return m_num; } void setage(int age) { m_age = age; }private: string m_name; int m_num; int m_age;};int main(){ C1 c; c.setname("yangyang");//可写 cout << c.getname() << endl;//可读 cout << c.getnum() << endl;//只读 c.setage(30);//只写 system("pause"); return 0;}
好的,到这里封装就算是学到手了,可以进行两个小案例:
#define _CRT_SECURE_NO_WARNINGS 1#include#include using namespace std;class Cube{public: void setchang(int chang) { m_c = chang; } void setkuan(int kuan) { m_k = kuan; } void setgao(int gao) { m_g = gao; } int getchang() { return m_c; } int getkuan() { return m_k; } int getgao() { return m_g; } int S() { return 2 * (m_c*m_g + m_c*m_k + m_g*m_k); } int V() { return m_c*m_g*m_k; } bool isSamebyclass(Cube &c) { if (m_c == c.getchang() && m_g == c.getgao() && m_k == c.getkuan()) { return true; } return false; }private: int m_c; int m_k; int m_g;};bool isSame1(Cube &c1, Cube &c2){ if (c1.getchang() == c2.getchang() && c1.getgao() == c2.getgao() && c1.getkuan() == c2.getkuan()) { return true; } return false;}int main(){ Cube c1; c1.setchang(10); c1.setkuan(10); c1.setgao(10); cout << "面积:" << c1.S() << endl; cout << "体积:" << c1.V() << endl; Cube c2; c2.setchang(11); c2.setkuan(11); c2.setgao(11); cout << "面积:" << c2.S() << endl; cout << "体积:" << c2.V() << endl; bool ret = isSame1(c1, c2); if (ret) { cout << "全局函数判断:两个立方体相等" << endl; } else { cout << "全局函数判断:两个立方体不相等" << endl; } ret = c1.isSamebyclass(c2); if (ret) { cout << "成员函数判断:两个立方体相等" << endl; } else { cout << "成员函数判断:两个立方体不相等" << endl; } system("pause"); return 0;}
#define _CRT_SECURE_NO_WARNINGS 1#include#include using namespace std;class Point{public: void setX(int x) { m_x = x; } int getX() { return m_x; } void setY(int y) { m_y = y; } int getY() { return m_y; }private: int m_x; int m_y;};class Circle{public: void setR(int r) { m_r = r; } int getR() { return m_r; } void setcenter(Point center) { m_center = center; } Point getcenter() { return m_center; }private: int m_r; Point m_center;};void C_and_P(Circle &c, Point &p){ int distance = (c.getcenter().getX() - p.getX())*(c.getcenter().getX() - p.getX()) + (c.getcenter().getY() - p.getY())* (c.getcenter().getY() - p.getY()); int doubleR = c.getR()*c.getR(); if (distance==doubleR) { cout << "点在圆上" << endl; } else if (distance "C++核心编程类和对象详解"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
成员
权限
封装
属性
意义
两个
函数
行为
私有
C++
内容
立方体
对象
保护
核心
编程
体积
儿子
全局
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
淘宝服务器搭建方式
安徽交通软件开发
服务器显示光信号红色
如何给普通人讲清楚网络安全防护
广西友邦永信网络技术有限公司中标
员工证件管理系统软件开发
石化数据库
宁国常规软件开发服务厂家供应
无线网络技术教程金光
信息与网络技术中级
网络安全基本技术
华为是不是退出了服务器市场
阿里云云南服务器虚拟主机
国家网络安全情景剧
网络安全教育教案主要目的
ps5街霸5服务器
it 服务器管理系统
登录的服务器未响应
衢州工业软件开发教程
网络安全形势建议
有电子网络技术的学校
域文件服务器安全策略
普通网络安全法
徐汇区环保网络技术解决方案
买主机好还是服务器
天下3 79服务器
虚拟软件AD域服务器能关么
数据库取出的数据怎么用
国内网络安全技术做得好
网络安全法制宣传简报