C++基础 C++对类的管理——封装
1.封装
两层含义:
(1)把事物的属性和方法结合成个整体。
(2)对类的属性和方法进行访问控制,对不信的进行信息屏蔽。
2.访问控制
控制分为 类的内部,类的外部。
public 修饰的成员,可在内部和外部访问。
private 修饰的成员,只能在内部访问。
封装就像一个手表,里面有很复杂的功能,但输出只有表盘,输入只能转转轴。
3. 类与对象
抽象一个类,用类去定义对象。
类是数据类型,是抽象的,对象是具体的变量,占用内存空间。
4. struct 和 class 关键字的区别
在 struct 定义的类中,所有成员的默认访问控制为 public
在 class 中 为 private。
5. 练习
(1)设计立方体类(cube),求出立方体的面积和体积,求两个立方体,是否相等。
#include <iostream> using namespace std; class cube{ private: double length; double high; double width; public: double getLength() { return length; } double getHigh() { return high; } double getWidth() { return width; } void setLength(double length) { this->length = length; } void setWidth(double width) { this->width = width; } void setHigh(double high) { this->high = high; } double getArea() { ; } double getVolume() { ; } bool isEqualCube1(class cube c); bool isEqualCube2(class cube *c); bool isEqualCube3(class cube &c); protected: }; bool cube::isEqualCube1(class cube c) { /* 下面的函数调用体现出封装的强大,因为复制的参数,不仅带有属性,还有函数 */ if (c.getLength() == this->length && c.getHigh() == this->high && c.getWidth() == this->width) return true; else return false; } bool cube::isEqualCube2(class cube *c) { if (c->getLength() == this->length && c->getHigh() == this->high && c->getWidth() == this->width) return true; else return false; return true; } bool cube::isEqualCube3(class cube &c) { if (c.getLength() == this->length && c.getHigh() == this->high && c.getWidth() == this->width) return true; else return false; } void main(void) { class cube c1, c2; c1.setHigh(); c1.setLength(); c1.setWidth(); c2.setHigh(); c2.setLength(); c2.setWidth(); cout << "c1's area = " << c1.getArea() << endl;; cout << "c2's volume = " << c2.getVolume() << endl; if (c1.isEqualCube1(c2)) cout << "c1 == c2" << endl; else cout << "c1 != c2" << endl; system("pause"); return ; }
C++基础 C++对类的管理——封装的更多相关文章
- MIT 2012分布式课程基础源码解析-事件管理封装
这部分的内容主要包括Epoll/select的封装,在封装好相应函数后,再使用一个类来管理相应事件,实现的文件为pollmgr.{h, cc}. 事件函数封装 可看到pollmgr.h文件下定一个了一 ...
- Http请求封装(对HttpClient类的进一步封装,使之调用更方便。另外,此类管理唯一的HttpClient对象,支持线程池调用,效率更高)
package com.ad.ssp.engine.common; import java.io.IOException; import java.util.ArrayList; import jav ...
- 基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
在SqlSugar的开发框架的后端,我们基于Web API的封装了统一的返回结果,使得WebAPI的接口返回值更加简洁,而在前端,我们也需要统一对返回的结果进行解析,并获取和Web API接口对应的数 ...
- UML基础系列:类图
类图描述系统中类的静态结构,它不仅定义系统中的类,描述类之间的联系,如关联.依赖.聚合等,还包括类的内部结构(类的属性和操作).类图描述的是静态关系,在系统的整个生命周期中都是有效的.对象图是类图的实 ...
- Java10-java语法基础(九)——java的封装性
Java10-java语法基础(九)——java的封装性 一.Java的三大特性:封装.多态.继承 封装:通过类封装对象的数据成员和成员方法,保证只有可信的类或者对象能够访问这些方法和数据成员,对不可 ...
- Java基础-DButils工具类(QueryRunner)详解
Java基础-DButils工具类(QueryRunner)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果只使用JDBC进行开发,我们会发现冗余代码过多,为了简化JDBC ...
- 【CUDA 基础】4.2 内存管理
title: [CUDA 基础]4.2 内存管理 categories: - CUDA - Freshman tags: - CUDA内存管理 - CUDA内存分配和释放 - CUDA内存传输 - 固 ...
- Objective-C 基础教程第九章,内存管理
目录 Object-C 基础教程第九章,内存管理 前言: 对象生命周期 引用计数 RetainCount1项目例子 对象所有权 访问方法中的保留和释放 自动释放 所有对象放入池中 自动释放池的销毁时间 ...
- python基础——使用元类
python基础——使用元类 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello. ...
随机推荐
- AJAX跨域POST发送json时,会先发送一个OPTIONS预请求
我们会发现,在很多post,put,delete等请求之前,会有一次options请求. 根本原因就是,W3C规范这样要求了!在跨域请求中,分为简单请求(get和部分post,post时content ...
- 【起航计划 015】2015 起航计划 Android APIDemo的魔鬼步伐 14 App->Activity->Translucent Blur 模糊背景
这个例子和Translucent不同的一点是Blur,也就是显示在当前Activit背后的其它Activity以模糊方式显示. 这是通过window对象Flag来设置的. // Have the sy ...
- 只为更快、更省、更安全的 Azure CDN
来来来!小编今天要公布一件大事啦: 经过最近一次更新,Azure CDN 高级版服务 HTTPS SSL 证书的申请方式有所改进啦,除了现有的 Azure CDN 代为申请证书外,还支持用户自己申请的 ...
- python生成url测试用例
generate_url.py #!/usr/bin/env python import random import os, sys channels = [ \ "BTV2", ...
- Spring Boot项目Circular view path问题解决
使用Spring Boot创建Spring MVC项目,访问url请求出现问题:Circular view path 1.问题描述 控制台打印: javax.servlet.ServletExcept ...
- webpack-dev-server启动后, localhost:8080返回index.html的原理
webpack-dev-server是一个采用Node.js Express实现的微型服务器, 内部使用webpack-dev-middleware来响应发送到服务器监听单口的HTTP请求. webp ...
- 修改jupyter notebook的工作路径
两种方法 一 修改jupyter notebook快捷方式的属性 ①根据下图找到jupyter的快捷方式:jupyter notebook→更多→打开文件位置 ②右键打开属性-将目标一栏中最后的%US ...
- 少年开始学习c#编程,过路的大神请担待!
这应该真正算开始学习编程, 安装好了 linux, 开通了博客员的博客, 同时今天也需要把sublime安好, 安装MonoDevelop Codeblocks mysql-workbench 配置好 ...
- 页面文本超出后CSS实现隐藏的方法
text-overflow: ellipsis !important; white-space: nowrap !important; overflow: hidden !important; dis ...
- C sharp #003# 面向对象编程基本构件
饮水思源:金老师的自学网站 索引 类的属性 简化字段/属性的初始化 命名空间 程序集 类的属性 字段+get/set方法=属性 (之前都是把字段和属性混着用..) 经典写法: using System ...