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

本文共 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://flwvl.baihongyu.com/

你可能感兴趣的文章
《理财市场情绪监测系统》代码实现【1】之行业词库
查看>>
Shortest Path [3]
查看>>
离线情报分析工具CaseFile
查看>>
【iCore4 双核心板_FPGA】例程九:锁相环实验——锁相环使用
查看>>
SQL Server 审计
查看>>
Java并发编程(一)学习大纲
查看>>
centos 基础修改文件权限
查看>>
05Hadoop-左外连接
查看>>
BBS论坛(四)
查看>>
轮询、长轮询、长连接、socket连接、WebSocket
查看>>
python3 识别图片文字
查看>>
aspx->cs->dll :在部署后就让所有的aspx处于已经编译成dll的状态
查看>>
存储过程介绍及asp存储过程的使用
查看>>
hibernate---->多对一关联映射
查看>>
学习动态性能表(5)--v$session
查看>>
文字在div中水平和垂直居中的的css样式
查看>>
spring与hibernate整合
查看>>
cocos creator protobuf实践
查看>>
OEA 2.11 支持单机版数据库 - SQLite与SQLCE对比
查看>>
Android基本界面控件(转)
查看>>