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. ...
随机推荐
- maven课程 项目管理利器-maven 3-3 maven中的坐标和仓库
本节主要讲了两大方面: 1 maven坐标 1.0 构件定义 任何依赖,插件,项目构建输出 都称之为构件. 1.1 maven坐标概念 groupid 公司或组织的域名倒序+当前项目名称 artif ...
- vue学习第一天 ------ 临时笔记
学习链接 Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(一)基础知识概述 http://blog.csdn.net/fungleo/article/detai ...
- IntelliJ IDEA详细配置和使用教程(转)
http://blog.csdn.net/m_m254282520/article/details/78900238 关闭Intellij IDEA自动更新 在File->Settings-&g ...
- Differences or similarities between Java and C++
“作为一名C++程序员,我们早已掌握了面向对象Object-oriented Programming程序设计的基本概念,而且Java的语法无疑是非常熟悉的.事实上,Java本来就是从C++衍生出来的. ...
- Java学习笔记——集合
类集简介 从JDK1.2开始Java引入了类集开发框架,所谓的类集指的就是一套动态对象数组的实现方案,在实际开发之中没有有何一项开发可以离开数组,但是传统的数组实现起来非常的繁琐.而且长度是其致命伤, ...
- 【起航计划 024】2015 起航计划 Android APIDemo的魔鬼步伐 23 App->Notification->IncomingMessage 状态栏通知
应用程序可以使用Notifications来通知用户某个事件发生了(如收到短信).类NotificationManager 用来处理Notification, NotificationManager可 ...
- Docker cgroup.procs no space left on device
环境:centos6 运行docker 时 错误提示: System error: write /sys/fs/cgroup/docker/01f5670fbee1f6687f58f3a943b1e1 ...
- vi使用命令
二.移动光标类命令 h :光标左移一个字符 l :光标右移一个字符 space:光标右移一个字符 Backspace:光标左移一个字符 k或Ctrl+p:光标上移一行 j或Ctrl+n :光标下移一行 ...
- leetcode: 哈希——two-sum,3sum,4sum
1). two-sum Given an array of integers, find two numbers such that they add up to a specific target ...
- 初学React:JSX语法
这是本人初学React做的学习笔记;讲的不是很深,只算是简单的进行介绍. 这是一个小系列.都是在同一个模板中搭建的,但是代码是不能正常执行的. >>第一个组件.js 'use strick ...