C++基础知识
jollysoul
千里之行,始于足下。
展开
-
类对象切割对虚函数调用的影响
背景现在有CFish和CAnimal两个类,并且CFish类继承于CAnimal类,它们都有breath这样的接口,只是表现形式不同,所以用虚函数来定义,类关系如下图所示;图一 类图关系其代码实现如下://基类class CAnimal{public: CAnimal() { //构造函数 cout "CAnimal转载 2017-07-19 09:59:56 · 263 阅读 · 0 评论 -
从内存布局看C++虚继承的实现原理
原创作品,转载请标明:http://blog.csdn.NET/xiejingfa/article/details/48028491准备工作1、VS2012使用命令行选项查看对象的内存布局微软的Visual Studio提供给用户显示C++对象在内存中的布局的选项:/d1reportSingleClassLayout。使用方法很简单,直接在[工具(T)]选项下找到“Visu转载 2017-07-19 09:36:48 · 2089 阅读 · 1 评论 -
字符串复制函数——strcpy,strncpy和strlcpy
好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。 但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。 1. strcpy我们知道,strcpy 是依据\0作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD 3.9): char * strcpy(char原创 2017-06-16 17:27:54 · 1066 阅读 · 0 评论 -
后台开发面试题目整理——C++篇
1. static 关键字有哪些用法1.1.面向过程设计中的static1. 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。静态变量都在全局数据区分配内存,静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的,是一个本地的全局变量,其它文件中可以定义相同名字的变量,不会发生冲突。2. 在局部变量前,加上关键字static,该变量就被定义成为一个静原创 2017-05-24 10:09:43 · 4506 阅读 · 0 评论