博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《C++必知必会》读书笔记2
阅读量:5768 次
发布时间:2019-06-18

本文共 750 字,大约阅读时间需要 2 分钟。

在类X的非常量成员函数中,this指针的类型为 X *const .也就是说他是指向非常量X的常量指针。

但是在类X的常量成员函数中,this的类型为const X* const . 这就是常量成员函数和非常量成员函数的区别。

类的非静态数据成员可以被声明为mutable,这将容许她们的值可以被这个类的常量成员函数(也包括非常量成员函数)修改。

 

如果一个类声明了一个或者多个虚函数,那么编译器会为这个类的每一个对象插入一个指向虚函数表的指针。

如果使用了虚拟继承,对象将会通过嵌入的指针,偏移量或者其他非嵌入的信息来维持对其虚基类自对象位置的跟踪。因此,即使类没有声明虚函数,其中还是有坑被插入了一个虚函数表的指针。

 

对于一个类X来说,复制构造函数应该被声明为 X (const X &);  而复制赋值操作符应该被声明为X& operator=(const X&) 。

 

将一个函数的地址初始化或赋值给一个指向函数的指针的时候,无需显式的取得函数地址,编译器知道隐式的获取函数的地址,因此在这种情况下,&操作符是可选的。比如:

void (*fp)(int );

extern void h(int);

fp=h;  //OK

fp= &h; //OK

类似的,可以采用如下的方式调用函数:

fp(12); 或者 (*fp)(12);

 

注意,和void * 指针可以指向任何类型的数据不同,不存在可以指向任何类型函数的通用指针。

还要注意,非静态成员函数的地址不是一个指针,因此不可以将一个函数指针指向一个非静态成员函数。

 

函数指针的一个传统用途是实现回调。

一个函数指针指向内联函数是合法的。但是如果通过函数指针调用内联函数将不会导致内联函数的调用,因为编译器通常无法在编译阶段确定将会调用什么函数。

转载地址:http://yddux.baihongyu.com/

你可能感兴趣的文章
区块链现状:从谨慎和批判性思维看待它(第二部分)
查看>>
苹果公司透露Siri新发音引擎的内部原理
查看>>
GCM 3.0采用类似方式向Android、iOS和Chrome发送消息
查看>>
如何成为一家敏捷银行
查看>>
Oracle在JavaOne上宣布Java EE 8将会延期至2017年底
查看>>
Javascript 深入浅出原型
查看>>
简单之极,搭建属于自己的Data Mining环境(Spark版本)
查看>>
Ruby 2.5.0概览
查看>>
如何通过解决精益问题提高敏捷团队生产力
查看>>
Comment2Wechat —— Typecho 插件
查看>>
Apache下.htaccess文件配置及功能介绍
查看>>
Magento XML cheatsheet
查看>>
Egg 2.19.0 发布,阿里开源的企业级 Node.js 框架
查看>>
Kubernetes 弹性伸缩全场景解析 (四)- 让核心组件充满弹性 ...
查看>>
使用MySQLTuner-perl对MySQL进行优化
查看>>
Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化 ...
查看>>
开发网络视频直播系统需要注意的地方
查看>>
haproxy mysql实例配置
查看>>
强化学习的未来— 第一部分
查看>>
TableStore:用户画像数据的存储和查询利器
查看>>