c++基础五个题(二)
一。c++中static的作用
1.隐藏:当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,static函数作用就是为了隐藏
2.可以保持变量的持久:存储在静态数据区的变量会在程序刚开始的时候进行唯一一次初始化,共有两种变量存储在静态存储区:全局变量和静态变量,但是静态变量可以控制可见范围(隐藏)
3.将static变量默认初始化为0
4.c++中应用
(1)不能把静态函数定义为虚函数
(2)静态数据成员是静态存储的,必须对它进行初始化(程序员手动初始化,否则编译不会报错,但是link时会报错)
(3)静态数据成员定义或者说明时前面要加static;
二。const关键字的作用?
1.const修饰变量,指针,引用
2.const修饰成员函数,表示该成员函数不会修改成员变量,常量对象只能调用常量成员函数,普通对象都可以调用
三。static和const能否同时修饰成员函数?
不能,因为static函数为类所有,不属于某一个具体的实例,而const是用于修饰成员函数的,确保成员函数不能修改类中的参数的,会在函数中隐式的添加一个this指针,表示它属于某一个实例。所以他们是矛盾的。
四。const 与指针的应用?
1.const int *a; 常量指针,内容不能变,不能通过*a=b的方式去赋值,但是可以a=&b的方式,重新指定方向
2.int const *a; 常量指针,与上面一样
3.int *const a; 指针常量,指针指向的地址不能变,但是地址上存储的内容是可以变的,(*a=b)(对),但是(a=b)(错)
五。简述虚函数的作用以及底层实现原理?
主要是答出虚函数表和虚函数表指针的作用?c++中虚函数使用虚函数表和虚函数表指针来实现,虚函数表是一个类的虚函数的地址表,用于索引类的本身以及父类的虚函数地址,假如子类的虚函数重写了父类的虚函数,则对应在虚函数表中把对应的虚函数替换为子类的虚函数地址,虚函数表指针存在于每一个对象中(通常为了效率考虑,会放在对象的开始地址处),他指向对象所在类的虚函数表的地址,在多继承环境下,会存在多个虚函数表指针,分别指向不同基类的虚函数表。
c++基础五个题(二)的更多相关文章
- c++基础五个题(三)
一.一个对象访问普通函数和虚函数的时候,哪一个更快? 访问普通函数更快,因为普通成员函数在编译阶段已经被确定,因此在访问时直接调用对应地址的函数,而虚函数在调用时,需要首先在虚函数表中查找虚函数所在的 ...
- c++基础五个题(一)
一.深拷贝和浅拷贝? 浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(仅仅是名称不同),对其中任何一个对象的改动都会影响另外一个对象,例如:一个人叫小王,后来改名小李,结果不管是小王死了 ...
- day 70 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- JAVA基础再回首(二十五)——Lock锁的使用、死锁问题、多线程生产者和消费者、线程池、匿名内部类使用多线程、定时器、面试题
JAVA基础再回首(二十五)--Lock锁的使用.死锁问题.多线程生产者和消费者.线程池.匿名内部类使用多线程.定时器.面试题 版权声明:转载必须注明本文转自程序猿杜鹏程的博客:http://blog ...
- day 56 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- Bootstrap <基础五>表格
Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. <thead> 表格 ...
- 前端总结·基础篇·CSS(二)视觉
前端总结系列 前端总结·基础篇·CSS(一)布局 前端总结·基础篇·CSS(二)视觉 前端总结·基础篇·CSS(三)补充 前端总结·基础篇·CSS(四)兼容 目录 一.动画(animation)(IE ...
- C#_02.14_基础五_.NET类
C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...
- day 69 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...
随机推荐
- 异常处理:你不可能总是对的 - 零基础入门学习Python032
异常处理:你不可能总是对的 让编程改变世界 Change the world by program 因为我们是人,不是神,所以我们经常会犯错.当然程序员也不例外,就算是经验丰富的码农,也不能保证写出来 ...
- 了不起的分支和循环02 - 零基础入门学习Python008
了不起的分支和循环02 让编程改变世界 Change the world by program 上节课,小甲鱼教大家如何正确的打飞机,其要点就是:判断和循环,判断就是该是不该做某事,循环就是持续做某事 ...
- mysql group_concat函数是有长度限制的
在表关联查询中,特别是一对多关系的表查询中,group_concat函数是很有用的一个函数,帮助我们减少对数据库查询的次数,减少服务器的压力. 但是今天使用group_concat函数查询数据库时,发 ...
- Vim 默认开启行号、语法显示等设置
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有显示行号.语法高亮度显示.智能缩进等功能的.为了更好的在vim下进行工作,需要手动设置一个配置文件:.vimrc. 在启动vim时,当前 ...
- 记一次 java程序优化
优化原因 环境中部署两个程序: web应用 tomcat 10G(webservice服务端,前端web服务) java应用 5G(webservice客户端,sock ...
- 【BBST 之伸展树 (Splay Tree)】
最近“hiho一下”出了平衡树专题,这周的Splay一直出现RE,应该删除操作指针没处理好,还没找出原因. 不过其他操作运行正常,尝试用它写了一道之前用set做的平衡树的题http://codefor ...
- 沙湖王 | 用Scipy实现K-means聚类算法
沙湖王 | 用Scipy实现K-means聚类算法 用Scipy实现K-means聚类算法
- 使用STS 创建spring配置文件
1.创建一个bean文件 2.输入文件名applicationContext.xml 3.这里会自动显示模板文件 4.创建后,自动填充头不定义 到这里就可以发现,我们创建spring文件时,需要的配置 ...
- C++: int和string相互转换
假设在一个C++的程序中常常会用到int和string之间的互换.个人建议能够写成一个函数,下次用的时候直接调用就可以. #include <iostream> #include < ...
- JAVA读、写EXCEL文件
採用jxl.jar包,网上下载,百度一下到出都是.希望能够帮助到大家. 接下来直接贴代码: <span style="font-size:18px;"> public ...