C++概述(二)

C++概述(二)

@(C++)

面向对象 与 类 简介


面向对象和类,我想也许就是C++里头的++吧
很多东西,都需要用到这里面的概念
所以还是想在介绍C++的某些特性前先把概念弄清楚

从数据类型说起

在说面向对象之前,我们先来复习一下如何声明一个变量

double d;
int * p;

第一条语句,声明了一个占用8个字节的double型变量
第二条语句,声明了一个同样占用了8个字节的指向整型的指针变量
这里写图片描述
这两种数据类型的区别,我们可以从它们可执行的操作来区分
double型,可加可减可乘可除可取余……
指针型呢?你试过拿指针和指针相乘相除吗?
而且,就算是让double型和指针型同时加一个整数,
加法所进行的操作还是不太一样
(这里同一个+号对不同的数据类型执行不同的操作称为运算符重载,以后还会提到)

数据表示 与 数据操纵 的结合

从上面简单的数据类型,我们可以看到
一种数据类型,
简单来讲,就是
这里写图片描述

用C中的结构体,我们可以自定义一种数据类型
我们可以自定义结构体里的数据
但是却不能自定义该数据类型可执行的操作

而到了C++,与结构体类似的,将让我们
有了自定义数据类型,自定义操作的能力

简单介绍类与对象(以string类为例子)

什么是类
类描述了一种数据类型的全部属性
什么是对象
对象是根据类创建的实体

类之于对象,就像类型之于变量
我们先来拿个内置的类看看怎么用

#include <string>
using 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();

调用类方法用结构体中常用的运算符.
string类中有length()方法,该方法会返回该字符串的长度
我们用str1对象去调用它,用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
内联函数
自定义函数中的默认值
函数重载
函数模板
名称空间
作用域解析运算符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值