C++Primer笔记-----day04
1.函数指针。
函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型决定,与函数名无关。
比如:bool lengthCompare(const string &,const string &);
该函数的类型为bool(const string &,const string &)
声明一个指向该函数的指针,只需将函数名替换为指针即可:bool (*pf)(const string &,const string &)。(*pf)的括号不可以省略!
使用函数指针:pf = funcName;或者pf = &funcName 均可。
需要注意的是,函数指针不存在转换规则,pf的类型必须与函数完全匹配(无论是函数返回值还是形参类型)
比如 string sumLength(const string&,const string&);
bool cstringCompare(const char*,const char*);
bool lengthCompare(const string &,const string &);
pf = sumLength; // 错误,函数返回类型不匹配
pf = cstringCompare; // 错误,形参类型不匹配
pf = lengthCompare; // 完全正确
我们还可以通过指向函数的函数指针直接调用该函数:bool b = pf("hello","goodbye");
2.关于this指针。
成员函数通过一个名为this的【额外的隐式参数】来访问调用它的那个对象。
当我们调用一个成员函数时,用请求该函数的对象的地址来初始化this
例如,类 A有一个成员函数foo();
A a;
a.foo(); // 编译器负责把a的地址传递给foo()的隐式形参this,相当于A::foo(&a)。
所以我们可以在成员函数的内部使用this,通过this直接访问对象的成员。
注意点:默认情况下,this的类型是指向类类型非常量版本的常量指针,在这个例子中为 A *const,所以this是一个常量指针,不允许改变this的地址,this总是指向“这个”对象。
this是一个常量指针,根据初始化规则,所以不能把this与常量对象绑定在一起,
所以,有时候需要修改this为const A *const,这时只需在成员函数的形参列表之后加一个const就可以完成。这类成员函数被称为常量成员函数。
常量对象,以及常量对象的引用、指针,都只能调用常量成员函数。
非常量对象可以调用常量成员函数,也可以调用非常量成员函数。
C++Primer笔记-----day04的更多相关文章
- C++ Primer笔记
C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须 ...
- C++ Primer 笔记(1)基础中的战斗机 输入输出 对输入不定数据处理
今天打算再重新好好的看一遍C++ Primer这本很经典的书籍,笔记开始: 1.每个C++程序都包含一个或者多个函数,其中必须有一个main,操作系统通过调用main入手运行程序: 2.函数包括:返回 ...
- C++ Primer 笔记 第一章
C++ Primer 学习笔记 第一章 快速入门 1.1 main函数 系统通过调用main函数来执行程序,并通过main函数的返回值确定程序是否成功执行完毕.通常返回0值表明程序成功执行完毕: ma ...
- C++primer笔记之顺序容器
最近又重新拾起C++primer,发现每一次看都会有不同的体验,但每一次看后因为不常用,忘记得很快,所以记笔记是很关键的一环,咋一看是浪费时间,实际上是节省了很多时间.下面就把这一节的内容做一个简单的 ...
- c++ primer 笔记 (一)
昨天开始看的<C++ Primer>,确实不错.希望这周抓紧看完,每天做下笔记,以便以后复习. main函数返回一个值给操作系统 操作系统通过main函数返回的值来确定程序是否成功执行 ...
- Java编程基础阶段笔记 day04 Java基础语法(下)
day04 Java基础语法 (下) 笔记Notes要点 switch-case语句注意 switch-case题目(switchTest5) 循环执行顺序 if-else 实现3个整数排序 Stri ...
- C++ Primer笔记(1)——连续读取数据、类型对应的尺寸、类型转换、字符串分行写法
这次要看看C++ Primer,这本基本上就是必读书籍了.下面的内容就是一些之前没有学过的知识的笔记. 读取数量不定的输入数据 虽然很简单,但是还是记一下: #include <iostream ...
- C++Primer笔记(3)
标准库类型string表示可变长的字符序列,使用前先包含string头文件.(哈哈,终于可以逃脱C语言中的str函数系列了.)因为是标准库的一部分,所以string被定义在命名空间std中.所以你懂该 ...
- C++ Primer 笔记 第三章
C++ Primer 第三章 标准库类型 3.1using声明 例: using namespace atd; using std::cin; 3.2string类型 初始化方式 string s1 ...
随机推荐
- Linux 用C语言实现简单的shell(2)
不知不觉两周没有发文了,因为“一万美金的福特奖学金答辩”,ACM比赛,网络论文阅读和网络大作业一大堆事把时间冲散了,所以先写一篇博文补上之前一坑. 之前发了一篇关于linux 用C语言实现简单shel ...
- BZOJ4517 Sdoi2016 排列计数 【DP+组合计数】*
BZOJ4517 Sdoi2016 排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 ...
- java集成WebSocket向所有用户发送消息
package com.reading.controller.library; import org.springframework.stereotype.Controller; import org ...
- 如何理解HTTP协议的 “无连接,无状态” 特点?
HTTP 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1.支持客户/服务器模式:2.简单快速:3.灵活:4.无连接:5.无状态. 无连接 无连接的含义是限制每次连接只处理一个请求. ...
- CH1802 表达式计算4
题意 给出一个表达式,其中运算符仅包含+,-,*,/,^(加 减 乘 整除 乘方)要求求出表达式的最终值 数据可能会出现括号情况,还有可能出现多余括号情况 数据保证不会出现>=2^31的答案 数 ...
- linux各个文件作用
linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基 ...
- bzoj1002 [FJOI2007]轮状病毒——找规律+高精度
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1002 打表找规律,似乎是这样:https://blog.csdn.net/fzhvampir ...
- (转)[Android实例] 关于使用ContentObserver监听不到删除短信会话的解决方案
最近做通讯录的项目,需要实时监听短信的删除,就用到了观察者ContentObserver,怪异的事情就此发生,当我删除一条短信的时候,可以监听到,但是,当我删除整条短信的时候,就无法监听到,查了很多资 ...
- 远程复制数据免登录 rsync 和 scp
一.备用机上(用于存放备份的机器) 和 目标机上(需要备份的服务器 ,如 246) 都需要安装 : yum install -y rsync 二.备用机上运行命令: -t rsa Generat ...
- RK3288 指令查看HDMI当前分辨率和支持的分辨率
$ adb shell root@xxx:/ # cd /sys/class/display/HDMI cd /sys/class/display/HDMI root@xxx:/sys/class/d ...