小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Programming language
  4. C/C++
  5. 正文

第四章:类与对象(一)

2015年4月8日 1816点热度 0人点赞 0条评论

一、面向对象程序的基本特点

1.抽象。抽象又分为数据抽象和代码抽象。

以钟表为例:

数据抽象:描述某类对象的属性或状态(对象相互区别的物理量),如int hour, int minute, int second等。

代码抽象:描述某类对象的共有的行为特征或具有的功能,如setTime() , showTime()等。

封装:将抽象出的数据、代码封装在一起,形成类。

目的:增强安全性和简化编程,使用者不必了解具体的实现细节,而只需要通过外部接口,以特定的访问权限,来使用类的成员。
实现封装:类声明中的{}

例如:

class  Clock {

public:

void setTime(int newH, int newM, int newS);
void showTime();

private:

int hour, minute, second;

};

public函数提供了类对外的访问接口,setTime()和showTime()是外部访问接口。private里面几个数据则是隐藏在类里面的,从外面看不到的。

2、继承。在已有类的基础上,进行扩展形成新的类。

3、多态:同一名称,不同的功能实现方式。
目的:达到行为标识统一,减少程序中标识符的个数。
实现:重载函数和虚函数

二、类与对象

类与对象的定义

对象是现实中的对象在程序中的模拟。 类是同一类对象的抽象,对象时类的某一特定实体。通过定义类的对象,才可以通过对象使用类中定义的功能。

设计一个类就是设计一个类型。

类的定义:

class 类名称
{
public:
公有成员(外部接口)
private:
私有成员
protected:
保护型成员
}

初始化类内对象值:

class Clock {

public:

void setTime(int newH, int newM, int newS);

void showTime();

private:

int hour = 0, minute = 0, second = 0;

};

Ⅰ公有类型成员

在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。

Ⅱ 私有类型成员

在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。

Ⅲ保护类型成员

与private类似,其差别表现在继承与派生时对派生类的影响不同,详见第七章。

对象定义的语法
类名 对象名;

例:Clock myClock;

类成员的访问权限
类中成员互相访问:直接使用成员名访问

类外访问:使用“对象名.成员名”方式访问 public 属性的成员

类的成员函数 在类中说明函数原型;

可以在类外给出函数体实现,并在函数名前使用类名加以限定;

也可以直接在类中给出函数体,形成内联成员函数;

允许声明重载函数和带默认参数值的函数。

内联成员函数
为了提高运行时的效率,对于较简单的函数可以声明为内联形式。

内联函数体中不要有复杂结构(如循环语句和switch语句)。

在类中声明内联成员函数的方式:

将函数体放在类的声明中。

使用inline关键字。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2015年4月8日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
Python之生成器 关于2010年全市中小学校寒暑假安排有关事宜的通知 leetcode题目解析(191101) iNove新春2010主题[本博客2010新年主题] 莱芜一中截至目前为止已有198人获得重点大学优惠资格 生活点滴0912-0919:高中学习生活的第一周
标签聚合
Python leetcode 鸟哥的linux私房菜 Java python学习 生活 高中 linux 学习 算法
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号