C++类中的封装-9
一。类通常分为以下两个部分
1.类的实现细节
2.类的使用方式
二。C++中类的封装
1.成员变量
c++中用于表示类属性的变量
2.成员函数
c++中用于表示类的行为的函数
3.在C++中可以给成员变量和成员函数定义访问级别
-public
成员变量和成员函数可以在类的内部和外界访问和调用
-private
成员变量和成员函数智能在类的内部被访问和调用
#include <stdio.h>struct Biology {bool living; };struct Animal : Biology {bool movable;void findFood() { } };struct Plant : Biology {bool growable; };struct Beast : Animal {void sleep(){ } };struct Human : Animal {void sleep() {printf("I'm sleeping...\n");}void work(){printf("I'm working...\n");} };struct Girl : Human { private:int age;public:void play(){printf("I'm girl, I'm playing...\n");}void print(){age = 22;printf("Girl's age is %d\n", age);play();sleep();work();} };struct Boy : Human { public:int age;void play(){printf("I'm boy, I'm playing...\n");}void print(){age = 23;printf("Boy's age is %d\n", age);play();sleep();work();} };int main(int argc, char *argv[]) {Girl girl;girl.print();Boy boy;boy.print();printf("Press any key to continue...");getchar();return 0; }
4.类成员的作用域都只在类的内部,外部无法直接访问
成员函数可以直接访问成员变量和调用其他成员函数
5.类的外部可以通过类变量访问public成员
类成员的作用域与访问级别没有关系
6.c++中用struct定义的类的所有成员默认为public。
用Class定义的类的所有成员都默认为private
三。类的作用域
#include <stdio.h>int i = 1;struct Test { private:int i;public:int j;int getI(){i = 3;return i;} };int main() {int i = 2;Test test;test.j = 4;printf("i = %d\n", i);printf("::i = %d\n", ::i);// printf("test.i = %d\n", test.i);printf("test.j = %d\n", test.j);printf("test.getI() = %d\n", test.getI());printf("Press any key to continue...");getchar();return 0; }
输出结果 2 1 4 3
四。一个运算类的实现:
1. 提供 setOperator 函数设置运算类型,如加、减、乘、除。
2.提供 setParameter 函数设置运算参数,类型为整型。
3.提供 result 函数进行运算,其返回值表示运算的合法性,通过引用参数返回结果。
operator.c
#include"operate.h"bool Operator::setOperator(char op) {bool ret = false;if( (op == '+')||(op == '-')||(op == '*')||(op == '/') ){ret = true; mOp = op;}return ret; } void Operator::setParameter(double p1, double p2) {mP1 = p1;mP2 = p2; } bool Operator::result(double& r) {bool ret = true;switch(mOp){case '/':if((-0.000001 < mP2) && (mP2 <0.0000001)){ret = false; } else {r = mP1 / mP2; }break;case '+':r = mP1 + mP2; break;case '-':r = mP1 - mP2; break;case '*':r = mP1 * mP2; break;default:ret = false;break; } return ret; }
operator.h
#ifndef _OPERATE_H_ #define _OPERATE_H_class Operator {public:bool setOperator(char op);void setParameter(double p1, double p2);bool result(double& r);private: char mOp;double mP1;double mP2;};#endif
main.c
#include <stdio.h> #include"operate.h"int main(int argc, char *argv[]) {Operator op;double r = 0;op.setOperator('/');op.setParameter(6,0);if( op.result(r) ){printf("Result is %f\n",r); }printf("Press any key to continue...");getchar();return 0; }
转载于:https://www.cnblogs.com/lvxiaoning/p/7591807.html
C++类中的封装-9相关推荐
- java类的封装_Java类中的封装
1.Java类中的封装 学习了访问权限修饰符后,应该可以理解封装性的概念和含义.封装性是面向对象三大特征之一 封装性是一种信息隐藏技术 2.封装的概念 在面向对象程式设计方法中,封装(英语:Encap ...
- 关于对发送HTTP请求以及解析服务器返回的数据操作的提取到一个公共类中进行封装
创建一个名为HttpUtil的类并提供名为sendHttpRequest静态方法. 相关代码如下: package com.hzy.networktest; import java.io.Buffer ...
- android封装好的Color类中的常量
通过android封装好的Color类中的常量 public static final int BLACK = 0xFF000000; public static final int DKGRAY = ...
- Mybatis多参数封装到一个类中模糊查询
1.创建QueryValueObject实体类 package com.william.domain;import org.omg.PortableInterceptor.USER_EXCEPTION ...
- java---解析XML文件,通过反射动态将XML内容封装到一个类中
本博客讲的XML解析,使用的是dom4j. 首先建立一个maven项目,在dom.xml中引入相应的dom4j的版本.作者下载的是热度很高的1.6.1版本.maven的使用在这里不做详细讲解. 引入成 ...
- python根据一个基类生成派生类_python中的封装继承多态
1.封装 类的封装可以隐藏类的实现细节,迫使用户只能通过方法去访问数据,这样就可以增强程序的安全性.接下来演示未使用封装可能出现的问题,如例所示. 在例中,运行结果输出的成绩为-68,在程序中不会有任 ...
- Android 获取通讯录联系人,打开通讯录获取联系人信息;整个流程封装在基类中;
打开原生通讯录获取联系人姓名和手机号 1.获取通讯录权限: <!--访问通讯录--><uses-permission android:name="android.permi ...
- Python正则表达式工具类文件的封装实例,提供了多个实例,并且在代码中包含中文注释
Python正则表达式工具类文件的封装实例,提供了多个实例,并且在代码中包含中文注释 import reclass RegexUtils:'''正则表达式工具类'''def __init__(self ...
- 第2章 包装外观(Wrapper Facade):用于在类中封装函数的结构型模式
2.1 介绍 本论文描述包装外观模式.该模式的意图是通过面向对象( OO)类接口来封装低级函数和数据结构.常见的包装外观模式的例子是像 MFC. ACE和 AWT这样的类库,它们封装本地的 OS C ...
最新文章
- 比较两个引用的几种方法
- android 照片拼接长图_我才发现,微信里面有一个功能,能将手机照片自动拼成长图...
- OC中的几种延迟执行方式
- Entity Framework Code First模式基础知识及入门实例01
- double类型占几个字节_MongoDB 中的数据类型
- Redmi Note10系列配LCD居中挖孔屏:5月26日正式发布
- RabbitMQ的基础知识与使用
- XML SOAP应用简介
- USB加密狗复制克隆破解软件
- wiley 期刊Stix字体问题
- linux Guest账户下如何更新默认的python版本
- 闲鱼商品选投实时性优化
- 谈谈 Primavera P6与Office Project(MSP)与区别
- 机器学习笔试面试题目 一
- 极客评论:使用Screamer广播播放和录制网络广播
- 从文本文件读取数据方法
- 二分图判断以及二分图最大匹配
- 抖音一键生成的AI绘画火了,网友惊呼:有点东西
- 宏观经济学和微观经济学
- 【vue下载】vue 点击下载图片直接打开问题解决