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的更多相关文章

  1. C++ Primer笔记

    C++ Primer笔记 ch2 变量和基本类型 声明 extern int i; extern int i = 3.14;//定义 左值引用(绑定零一变量初始值,别名) 不能定义引用的引用:引用必须 ...

  2. C++ Primer 笔记(1)基础中的战斗机 输入输出 对输入不定数据处理

    今天打算再重新好好的看一遍C++ Primer这本很经典的书籍,笔记开始: 1.每个C++程序都包含一个或者多个函数,其中必须有一个main,操作系统通过调用main入手运行程序: 2.函数包括:返回 ...

  3. C++ Primer 笔记 第一章

    C++ Primer 学习笔记 第一章 快速入门 1.1 main函数 系统通过调用main函数来执行程序,并通过main函数的返回值确定程序是否成功执行完毕.通常返回0值表明程序成功执行完毕: ma ...

  4. C++primer笔记之顺序容器

    最近又重新拾起C++primer,发现每一次看都会有不同的体验,但每一次看后因为不常用,忘记得很快,所以记笔记是很关键的一环,咋一看是浪费时间,实际上是节省了很多时间.下面就把这一节的内容做一个简单的 ...

  5. c++ primer 笔记 (一)

    昨天开始看的<C++ Primer>,确实不错.希望这周抓紧看完,每天做下笔记,以便以后复习. main函数返回一个值给操作系统   操作系统通过main函数返回的值来确定程序是否成功执行 ...

  6. Java编程基础阶段笔记 day04 Java基础语法(下)

    day04 Java基础语法 (下) 笔记Notes要点 switch-case语句注意 switch-case题目(switchTest5) 循环执行顺序 if-else 实现3个整数排序 Stri ...

  7. C++ Primer笔记(1)——连续读取数据、类型对应的尺寸、类型转换、字符串分行写法

    这次要看看C++ Primer,这本基本上就是必读书籍了.下面的内容就是一些之前没有学过的知识的笔记. 读取数量不定的输入数据 虽然很简单,但是还是记一下: #include <iostream ...

  8. C++Primer笔记(3)

    标准库类型string表示可变长的字符序列,使用前先包含string头文件.(哈哈,终于可以逃脱C语言中的str函数系列了.)因为是标准库的一部分,所以string被定义在命名空间std中.所以你懂该 ...

  9. C++ Primer 笔记 第三章

    C++ Primer 第三章 标准库类型 3.1using声明 例: using namespace atd; using std::cin; 3.2string类型 初始化方式 string s1 ...

随机推荐

  1. eclipse如何通过git把项目上传到码云上

    转载:原文链接:https://www.cnblogs.com/yixtx/p/8310311.html 1.eclipse安装git插件 具体我也做过,因为我下载的eclipse版本以及由git插件 ...

  2. CF1130E Wrong Answer

    E Wrong Answer 注意到 \(n\geq 2\) 时才可能有解,可以按如下方式构造一个 \(a_{1,2\dots n}\): 令 \(a_1=-1\) ,而后面的数都为正.记 \(s=\ ...

  3. LOJ2424 NOIP2015 子串 【DP】*

    LOJ2424 NOIP2015 子串 LINK 题目大意是给你两个序列,在a序列中选出k段不重叠的子串组成b序列,问方案数 首先我们不考虑相邻的两段,把所有相邻段当成一段进行计算 然后设dpi,j, ...

  4. 在Eclipse中导入dtd和xsd文件,使XML自动提示

    DTD 类型约束文件    1. Window->Preferences->XML->XML Catalog->User Specified Entries窗口中,选择Add ...

  5. Sprint第一个冲刺(第五天)

    一.Sprint介绍 今天我们主要做的是修复乱码,完善项目. 任务进度: 二.Sprint周期 看板: 燃尽图:

  6. php、打印

    <!DOCTYPE HTML><html><head><meta http-equiv="content-type" content=&q ...

  7. BZOJ2384:[CEOI2014]Match

    浅谈\(KMP\):https://www.cnblogs.com/AKMer/p/10438148.html 题目传送门:https://lydsy.com/JudgeOnline/problem. ...

  8. Java API 操作Zookeeper

    一.依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookee ...

  9. 转发,重定向以及区别和简单的session对象

    1.转发     作用:在多个页面交互过程中实现请求数据的共享.     过程:Web服务器内部将一个request请求的处理权交给另外一个资源,属于同一个访问请求和响应过程,所以request对象的 ...

  10. 编译openvpn在链接时报tuncfg错误

    1. 链接时产生tuncfg错误 init.o: In function `do_persist_tuntap': init.c:(.text+0x24d8): undefined reference ...