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. ios逆向工程-静态分析

    最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下. 首先学习资料: 念茜(大神)的博客: http://nianxi.net <ios应用逆向工程 分析与实战> --- ...

  2. HDU - 5306 Gorgeous Sequence (吉司机线段树)

    题目链接 吉司机线段树裸题... #include<bits/stdc++.h> using namespace std; typedef long long ll; ,inf=0x3f3 ...

  3. ThinkPHP5 使用create 获取表单所有字段

    TP5没有 TP3的那个create创建表单字段,如果字段太多,写起来是非常麻烦 只需要在 框架里面 think/db/Query.php 里面加上函数 public function create( ...

  4. np.random 的使用

    random 有很多地方会用到. 参考这篇: http://www.cnblogs.com/CheeseZH/p/4593349.html

  5. mui 修改下拉刷新提示文字的显示位置

    第一种: .mui-bar-nav~.mui-content .mui-pull-top-pocket { top: 126px !important; } 第二种: .mui-pull-top-po ...

  6. oracle之 RAC Interconnect之HAIP

    0. 背景 Oracle 从11.2.0.2开始引入了一个新特性叫做Redundant Interconnect,简称HAIP.HAIP的目的用来代替操作系统级别的网卡绑定以实现Active-Acti ...

  7. linux-docker安装

    https://yeasy.gitbooks.io/docker_practice/content/install/centos.html

  8. 使用Maven运行Solr(翻译)

    Solr是一个使用开源的搜索服务器,它采用Lucene Core的索引和搜索功能构建,它可以用于几乎所有的编程语言实现可扩展的搜索引擎. Solr的虽然有很多优点,建立开发环境是不是其中之一.此博客条 ...

  9. CMD中文显示为乱码

    中文显示为乱码 临时解决方案: 在 CMD 中运行 chcp 936. 永久解决方案: 打开不正常的 CMD 或命令提示符窗口后,单击窗口左上角的图标,选择弹出的菜单中的“默认值”,打开如下图的对话框 ...

  10. FPGA之外,了解一下中断

    中断是什么? 中断的汉语解释是半中间发生阻隔.停顿或故障而断开.那么,在计算机系统中,我们为什么需要“阻隔.停顿和断开”呢? 举个日常生活中的例子,比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里 ...