C++ —— C++类

C++ ——

 

1、类

       类是具有相同属性和行为的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和行为两个主要部分。

class Clock
{
public:void SetTime(int new_hour, int new_minute,int new_second);void ShowTime();
private:int hour, minute, second;
};

(1)利用类可以实现数据的封装,隐藏,继承与派生。

封装:将抽象出的数据成员、代码成员相结合,将它们视为一个整体。目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。实现封装:类声明中的{}

(2)利用类易于编写大型复杂程序,其模块化程度比采用函数更高。

  函数:将逻辑上相关的语句与数据封装,用于完成特定的功能;

  类:将逻辑上相关的函数与数据封装,对所要处理的问题进行描述。

(3)类是C++程序设计的核心成分,是C++封装的基本单元,它把数据和函数封装在一起。

 

2、类的构成

class类名标识符
{
public:// 公有成员(外部接口)
protected:// 保护成员
private:// 私有成员
};

(1)关键字class表示类,类名标识符一般首字母用大写字母表示,以示与对象名的区别。(2)类的成员分为两类:数据成员和成员函数。

(3)public、protected、private访问控制

private(私有成员):只允许类内部的成员访问,任何本类以外的成员(对象)均不能访问。

public(公有成员):它们是类与外部的接口,任何外部函数都可以访问公有成员。

protected(保护成员):与private类似,其差别表现在继承与派生时对派生类的影响的不同。

 

3、成员函数

(1)成员函数与普通函数

       成员函数属于类,成员函数定义是类设计的一部分,其作用域是类作用域,而普通函数一般为全局函数。

       成员函数的操作主体是对象,使用时通过捆绑对象来行使其职责,而普通函数被调用时没有操作主体

(2)类中定义成员函数

       成员函数的定义代码可以放在类定义中。类中定义的成员函数的规模一般都比较小,语句只有1~5句。在类中定义的成员函数默认为内联函数,即使没有明确用inline标示。在C++中,类定义通常在头文件中,因此这些成员函数定义也伴随着进入头文件,而内联函数是可以放在头文件中的。

(3)类后定义成员函数

       将类定义和其成员函数定义分开,是目前开发程序的通常做法。

       把类定义(头文件)看成是类的外部接口;类的成员函数定义看成是类的内部实现(源文件)。

    返回类型类标识符::成员函数名(参数表)
    {}

    其中::是作用域区分符。

如:voidA::Set(int a,int b){}      

(4)重载成员函数

       同一个类的成员函数可以重载,方法与非成员函数重载相同。不同类的成员函数同名,不是函数重载。类的成员函数与非成员函数同名,不是函数重载。

 

4、调用成员函数

(1)必须通过对象去调用,要指定对象和成员名,否则无意义。

       格式:对象名.成员

(2)类类型作为一个构造类型,不但可以定义对象,而且可以定义对象指针或对象引用。

(3)this指针

       this指针是C++实现封装性的一种机制。程序运行时,系统自动为每个对象提供一个this指针,该this指针接受当前对象的地址,所有对成员的访问都被隐含地加上前缀:this->。

如month=m;等价于this->month=m;

       无论哪个对象调用,成员函数从获得的参数(显式的和隐含的)来判断都清楚,所以成员函数中访问成员无需对象名作前缀。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466142.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一行代码还能这么秀

老早就想写这篇文章了,因为我经常用用这个方法来装逼,今天终于要把这个装逼方法分享给大家了。我从来不会告诉别人我自己的微信公众号关注早就已经超过40万了。看下面的截图这张截图建议大家保存下,如果遇到不公的事情,你就跟他说…

原来你是这样的Promise

1. Promise简介 promise是异步编程的一种解决方案,它出现的初衷是为了解决回调地狱的问题。 打个比方,我需要: --(延迟1s)--> 输出1 --(延迟2s)--> 输出2 --(延迟3s)--> 输出3 通常写法: setTimeout(()> {console.log…

VS2015 vc++ 项目出现new.h找不到的错误

安装完 VS2015 后,直接新建项目->win32控制台->运行,结果报错!"无法打开包括文件: “stdio.h”: No such file or directory”"lnk1104:无法打开文件 ucrtd.lib ”奇了怪了,stdio.h 和 ucrtd.lib 都是 VS 自带的头…

C#——image与byte数组的转换

image to byte[] MemoryStream msnew MemoryStream(); image.Save(ms,System.Drawing.Imaging.ImageFormat.Gif ); byte[] imagedatams.GetBuffer (); byte[] to imageMemoryStream ms new MemoryStream(imagedata);img Drawing.Image.FromStream(ms);转载于:https://www.cnb…

Linux Select

Linux Select 在Linux中,我们可以使用select函数实现I/O端口的复用,传递给 select函数的参数会告诉内核: •我们所关心的文件描述符 •对每个描述符,我们所关心的状态。(我们是要想从一个文件描述符中读或者写,还…

搞懂图像二值化算法

传统的机器视觉通常包括两个步骤:预处理和物体检测。而沟通二者的桥梁则是图像分割(Image Segmentation)[1]。图像分割通过简化或改变图像的表示形式,使得图像更易于分析。举个例子,食品加工厂新进了一批肉鸡&#xff…

vs2015无法打开包括文件:“winapifamily.h”

老项目是vs2003下的项目。升级vs2015后,调试运行报错 C:\Program Files (x86)\Windows Kits\8.0\Include\um\winsdkver.h(21): fatal error C1083: 无法打开包括文件:“winapifamily.h”: No such file or directory 在项目包含目录中包含了这个Windows Kits\8.0\…

JavaWeb无限级分销结构分析

在现实生活中我们经常遇到由推荐人注册,比如一个购物平台,用户A推荐用户B注册,那当B购买商品成功时,用户A就会拿到相应的提成。只要是用户A推荐的用户购买商品成功后,A用户都会拿到提成。 当用户B推荐了用户C,那当用户…

如何在Word里面自动生成目录

1、对整个文本进行排版处理; 2、先将第一个一级标题选中,再点击工具栏“字体”前“正文”的下拉菜单,选择“标题1”; 3、此时会在此行前出现一个黑点,表明此行已被设为目录项(前方黑点不会被打印&#xff0…

一个风骚的C语言操作

有个小伙伴在我们的嵌入式交流群里发了类似下面的一张图&#xff0c;顿时引起一阵骚动&#xff0c;我把源代码再附上&#xff0c;main.c 如下&#xff1a;#include <stdio.h> #include <string.h>static char city_name[][20] { #include "city.h" };in…

VS2003升级VS2010修改

BUG1: fatal error C1189: #error: MFC does not support WINVER less than 0x0601. Ple 在StdAfx.h中把#define WINVER 0X0500 //为 Windows98 和 Windows 2000 及更新版本改变为适当的值。改为&#xff1a; #define _WIN32_WINNT 0x0601 BUG2: https://www.cnblogs.com/slo…

Linux poll

Linux poll poll提供的功能与select类似&#xff0c;不过在处理流设备时&#xff0c;它能够提供额外的信息。 1、函数原型#include <poll.h>int poll(struct pollfd fd[], nfds_t nfds, int timeout);2、函数参数&#xff1a;&#xff08;1&#xff09;fd&#xff1a;一个…

SQL Server表分区-水平分区

SQL Server表分区&#xff0c;sql server水平分区 转自&#xff1a;http://www.cnblogs.com/knowledgesea/p/3696912.html 根据时间的&#xff0c;直接上T-SQL代码的水平分区&#xff1a;https://www.xuebuyuan.com/1817312.html?tdsourcetags_pcqq_aiomsg什么是表分区 一般情…

jQuery1.3.2 源码学习 -2 两个重要的正则表达式

32 // Is it a simple selector 33 isSimple /^.[^:#\[\.,]*$/ / / 表示这是正则表达式 ^ 表示开始部分 $ 表示结束部分 . 匹配除了 \n 之外的任何字符 [^character_group] 表示不在字符集合中 [^:#\[\.,] 表示除了冒号 (:), #, 前中括号([), 句号(.) 和逗号(,)之外的任何一个…

基于STC89C52的韦根数据接收

韦根是一种开放的通讯协议&#xff0c;具体官方介绍如下&#xff1a;Wiegand协议是国际上统一的标准&#xff0c;有很多格式&#xff0c;标准的26-bit 应该是最常用的格式。此外&#xff0c;还有34-bit 、37-bit 等格式。格式的含义如下&#xff1a;当给出这一串数字&#xff0…

头文件介绍

头文件介绍 axftmp1.h 是收集类模板(MFC模板类)的头文件&#xff0c;倘若你在程序中用到了CArray, CObList等数据结构时&#xff0c;那么就得加载该文件。通常在MFC编程中&#xff0c;为了使用集合、数组类&#xff0c;要在StdAfx.h中加入下面语句&#xff1a;#include <afx…

超乎想象,数据揭示自学成才的码农为何备受青睐

你是否想成为一个 Web 开发者&#xff0c;但却不知道从哪里开始&#xff1f; 你是否对学习编程语言的大量建议和繁琐细节感到审美疲劳&#xff1f; 你是否不确定需要遵循哪条路才能成为一个自信而又足智多谋的开发者&#xff1f; 如果你的回答是肯定的&#xff0c;那么不要担心…

Linux epoll

Linux epoll事件触发一、什么是epollepoll是什么&#xff1f;按照man手册的说法&#xff1a;是为处理大批量句柄而作了改进的poll。当然&#xff0c;这不是2.6内核才有的&#xff0c;它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linuxkernel 2.5.44)&…

Cisco 3层交换HSRP

现在3层交换机上:先把每一台交换机的vlan的ip配好在进入vlan (n)下在配<一>热备份的ip<二>配优先级(standby 加是第几组如1 priority 加优先级 如200)<三>占先权(standby 1 preempt)配置如下:假如你是vlan1ip routinginterface vlan 1standby 1 ip 192.168.1…

Linux下的图形库curses写贪吃蛇,酷

最近看到大神在Linux下写的贪吃蛇代码&#xff0c;用到了curses图形库&#xff0c;可能很多人都没有用过&#xff0c;分享出来给大家。在ubuntu下安装curses图形库命令sudo apt-get install libncurses5-dev双buff是一个非常优秀的机制&#xff0c;之前写贪吃蛇的时候&#xff…