C++概述(二)
发布日期:2022-02-07 06:39:43
浏览次数:5
分类:技术文章
本文共 2010 字,大约阅读时间需要 6 分钟。
C++概述(二)
@(C++)
面向对象 与 类 简介
面向对象和类,我想也许就是C++里头的++吧
很多东西,都需要用到这里面的概念 所以还是想在介绍C++的某些特性前先把概念弄清楚从数据类型说起
在说面向对象之前,我们先来复习一下如何声明一个变量
double d;int * p;
第一条语句,声明了一个占用8个字节的double型变量
第二条语句,声明了一个同样占用了8个字节的指向整型的指针变量 这两种数据类型的区别,我们可以从它们可执行的操作来区分 double型,可加可减可乘可除可取余…… 指针型呢?你试过拿指针和指针相乘相除吗? 而且,就算是让double型和指针型同时加一个整数, 加法所进行的操作还是不太一样 (这里同一个+号对不同的数据类型执行不同的操作称为运算符重载,以后还会提到)数据表示 与 数据操纵 的结合
从上面简单的数据类型,我们可以看到
一种数据类型, 简单来讲,就是用C中的结构体,我们可以自定义一种数据类型
我们可以自定义结构体里的数据 但是却不能自定义该数据类型可执行的操作而到了C++,与结构体类似的类,将让我们
有了自定义数据类型,自定义操作的能力简单介绍类与对象(以string类为例子)
什么是类
类描述了一种数据类型的全部属性 什么是对象 对象是根据类创建的实体
类之于对象,就像类型之于变量
我们先来拿个内置的类看看怎么用#includeusing namespace std;int main(){ string str1 = "v"; string str2 = "matrix";}
1. string文件
系统内置的string类在string文件里,因此先包含它
#include <string>
2. string类及声明string对象
string类是在std名称空间里的
因此要using namespace std;
就用极其正常的方法, 就像声明一个变量一样声明一个string类的对象 3. string类有什么特别的地方
实例1:调用方法: length()
string str2 = "matrix";int length = str2.length();
调用类方法用结构体中常用的运算符.
length = str2.length();
然后length就等于6啦; 实例2:调用方法:string类中的+运算符重载 string str3 = str1 + str2;//str3 = "vmatrix";
在string类中,+号经过重载,可以让这些对象相加
实例3:调用方法:string类中的>运算符重载 string类内部定义了> < == 运算符 所以我们可以直接比较,不用再用里面的strcmp函数了if (str1 > str2) cout << str1 + str2;//输出 :vmatrix
比较的依据是字符的ASCII码,码越大则该字符串越大
由此会有,小写字母比大写字母大
实例4:调用方法:find()
我要找找str2字符串里面有没有x这个字符int pos = str2.find('x');//返回x出现的位置,注意第一个位置是零//pos == 5;
当然也会出现找不到的情况,
此时str2对象就会返回定义在string类中的npos的值 它的值是-1(类型为size_t 的-1)截取子串,替换子串等等……
string类中都有相应的方法来解决 想要深入了解的可以继续看书本上网查一查 string类还不会出现C风格字符串常出现的溢出问题 比C中的字符串好用太多就是了当然,好用是有代价的,效率低
面向对象编程与封装
想想,如果说要用C编一个对字符串进行各种操作的程序
我们需要用多少的函数 我们还需要自定义多少的函数 而现在 我们往string类的对象里放入了数据 并且通过调用类方法,操纵着类里的数据 简而言之,类方法就是我们与数据交互的一个接口 而且有一点 无论是类方法还是类的数据本身 都封装在了类对象里 我们无需关心方法是如何实现的 只需要知道接口就能拿来用 这就意味着类和调用接口的程序可以独立开发 (也许以后作业就是自己实现一个string类)今后计划
现在都还是概述
以后会开始按照一定的顺序稍微细讲C++的特性 希望能够帮助大家更快的熟悉C++吧 那本大学教程一章就把所有特性都过掉我也是醉了 以后会介绍一些特性,C++的类的深入讲解放到以后吧 简单I/O 数据表示 头文件 new与delete 内联函数 自定义函数中的默认值 函数重载 函数模板 名称空间 作用域解析运算符转载地址:https://blog.csdn.net/wyfwyf12321/article/details/54584950 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月09日 08时56分42秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Emacs-032-关闭当前Buffer
2019-04-27
Emacs-102-spacemacs使用vim导航键在文件清单中移动
2019-04-27
Emacs-103-使用spacemacs自带配置显示行号
2019-04-27
Emacs-204-company popup功能失效
2019-04-27
Emacs-205-Emacs的管理模块化
2019-04-27
Emacs-206-Windows上实现org-pomodoro的声音提示播放
2019-04-27
Emacs-207-Emacs org-mode与主题
2019-04-27
Emacs-208-搜索工程中的文件
2019-04-27
Emacs-209-使用projectile管理工程
2019-04-27
Emacs-210-使用projectile生成工程TAGS
2019-04-27
Emacs-211-在工程管理中跳转到指定的函数或变量定义位置
2019-04-27
Emacs-212-跳转到工程根目录
2019-04-27
Emacs-213-在工程中搜索
2019-04-27
Emacs-214-光标在不同的缩进中间跳转
2019-04-27
vs_code_004_VS_Code中批量化修改匹配项
2019-04-27
emacs_247_spacemacs中选扩展选择代码区域
2019-04-27
vs_code_005_VS_Code1.28外观变化
2019-04-27
T_001_Windows升级
2019-04-27
002_shell变量 赋值
2019-04-27
003_bash对于脚本换行符格式的要求
2019-04-27