
C/C++
文章平均质量分 67
不舍驽马
在校学生
展开
-
Sizeof与Strlen的区别与联系
http://www.cnblogs.com/carekee/articles/1630789.html一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此s转载 2015-07-25 22:24:09 · 305 阅读 · 0 评论 -
strcpy的正确实现
http://www.weste.net/2006/2-20/13432127659.html1.引言 本文的写作目的并不在于提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的解答。企业要求面试者写一个最简单的strcpy函数都可看出面转载 2015-08-16 23:19:46 · 10367 阅读 · 2 评论 -
编写一个智能指针类
http://www.hawstein.com/posts/13.9.html比起一般指针,智能指针会自动地管理内存(释放不需要的内存),而不需要程序员去操心。 它能避免迷途指针(dangling pointers),内存泄漏(memory leaks), 分配失败等情况的发生。智能指针需要为所有实例维护一个引用计数, 这样才能在恰当的时刻(引用计数为0时)将内存释放。转载 2015-08-31 17:35:22 · 582 阅读 · 0 评论 -
警惕缓冲区溢出(C中那些不安全的库函数)
http://blog.youkuaiyun.com/yang_yulei/article/details/45314177C 和 C++ 不能够自动地做边界检查,边界检查的代价是效率。一般来讲,C 在大多数情况下注重效率。然而,获得效率的代价是,C 程序员必须十分警觉以避免缓冲区溢出问题。C语言标准库中的许多字符串处理和IO流读取函数是导致缓冲区溢出的罪魁祸首。我们有必要了解这些转载 2015-09-03 22:14:13 · 1015 阅读 · 0 评论 -
编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配
#include using namespace std; //只能在堆上分配内存 class HeapOnly { public: HeapOnly() { cout"Construct." } //pseudo dtor,注意为const,因为const也可能需要被销毁 void原创 2015-08-06 19:47:20 · 460 阅读 · 0 评论 -
malloc函数的一种简单的原理性实现[转]
http://lklkdawei.blog.163.com/blog/static/32574109200881445518891/malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针malloc()工作机制 mal转载 2015-08-06 22:09:56 · 361 阅读 · 0 评论 -
C++中const的实现细节
1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。 3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: const转载 2015-09-03 23:46:01 · 626 阅读 · 0 评论 -
C++中overload,override,overwrite的区别详细解析
Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名转载 2015-08-07 23:04:15 · 480 阅读 · 0 评论 -
构造函数为什么不能是虚函数
本文的主题是构造函数不能是虚函数,首先这不需要你用脑子去记,因为当你写出来虚构造函数时,编译器是能检查出来的。本文的目的是为什么构造函数不能是虚函数。首先,先看一段错误的代码,下面的代码是通不过编译阶段的。1 class A{2 public:3 virtual A(){4 this->value = 0;5 }6 private:7转载 2015-08-21 00:19:44 · 322 阅读 · 0 评论 -
C++中虚函数与晚绑定的编译器实现
编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数 的类中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函 数调用时(也就是做多态调用时),编译器静态地插入转载 2015-08-21 19:27:58 · 599 阅读 · 0 评论 -
C++函数声明和定义深度解析(转)
概述:声明是将一个名称引入一个程序.定义提供了一个实体在程序中的唯一描述.声明在单个作用域内可以重复多次(类成员除外),定义在一个给定的作用域内只能出现一次. 一个定义就是一个声明,除非:它定义了类的一个静态数据成员.它定义了类的非内联成员函数. 声明是告诉编译器一些信息,以协助编译器进行语法分析,避免编译器报错。而定义是告诉编译器生成一些代转载 2015-09-06 13:33:43 · 1781 阅读 · 0 评论 -
对C++名字隐藏的理解
Overwrite(重写):是指派生类的函数屏蔽了与其同名的基类函数,规则如下:(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。如何理解这句呢?看这个例子:class FirstClass{public: virtual void MethodA(int); virtual vo原创 2015-08-31 16:18:23 · 602 阅读 · 0 评论 -
用C++写一个函数,打印输入文件的最后k行
http://www.hawstein.com/posts/13.1.html一种方法是打开文件两次,第一次计算文件的行数N,第二次打开文件,跳过N-K行, 然后开始输出。如果文件很大,这种方法的时间开销会非常大。我们希望可以只打开文件一次,就可以输出文件中的最后k行。 我们可以开一个大小为k的字符串数组,然后将文件中的每一行循环读入。 怎么样循环读入呢?就是将k行字符转载 2015-08-31 15:14:55 · 735 阅读 · 0 评论 -
C++中的static关键字
http://blog.youkuaiyun.com/Hackbuteer1/article/details/7487694C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就转载 2015-08-24 17:39:32 · 233 阅读 · 0 评论 -
volatile与编译器代码优化浅析
转载自:http://blog.chinaunix.net/uid-24641004-id-3395896.htmlVolatile有什么用?最近写ARM9的裸板C语言代码,比如说我想表示到GPBCON的地址的内容,我们往往会这样写:#define GPBCON (*(volatile unsigned int*)0x56000010)转载 2015-07-18 13:14:27 · 582 阅读 · 0 评论 -
左孩子右兄弟树的递归与非递归、深度与广度遍历
http://blog.chinaunix.net/uid-21712186-id-1818095.html左孩子右兄弟存储方式: struct tree_node{ int data; tree_node* first_child; tree_node* sibling;}一个观念必须要有: root没有兄弟sibling,根是独立的,代表这转载 2015-08-10 22:52:30 · 3718 阅读 · 2 评论 -
虚函数表的实现细节
http://blog.youkuaiyun.com/lingfengtengfei/article/details/12345809虚函数·虚表是怎么实现的?虚表存放在哪里?·虚表中的数据是在什么时候确定的?·对象中的虚表指针又在什么时候赋值的?我们很难通过 C++语言本身来找到答案。 C++标准给编译器实现者定义了语法规范,但是被并没有定义如何实现这些语法规范,转载 2015-08-27 23:32:50 · 416 阅读 · 1 评论 -
《Linux多线程服务端编程》学习笔记---第一章
多线程下管理对象会遇到的问题:(1)对象析构时可能别的线程在执行该对象的成员函数(2)成员函数执行时该对象正在被别的线程析构(3)在调用某对象时如何得知该对象还未被析构对这些问题进一步看就是要保证多线程环境下对象创建与析构的安全性。对于创建,关键是不要在创建过程中泄露this指针,如果泄露了调用者会在对象还未构造完成之前就开始使用这一对象,如果对象是基类对象,其派生类还未构造,原创 2015-08-01 12:58:06 · 1432 阅读 · 0 评论 -
由memcpy strcpy memmove看内存重叠
/***********************C语言标准库函数strcpy的一种典型的工业级的最简实现*返回值:目标串的地址。*对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。*参数:des为目标字符串,source为原字符串*/ char* strcpy(char* des,const char* sourc原创 2015-08-13 21:57:54 · 526 阅读 · 0 评论 -
C++面试题
http://www.jobui.com/mianshiti/it/cpp/5107/1. 一个系统里面有多个线程, 其中一个线程想终止另外一个线程, 该怎么实现.2. 为什么要用virtual destructor3. 什么是heap corruption4. Semaphore VS Mutex5. C++中的static, 怎么用,内存在哪里分配,转载 2015-08-03 18:16:08 · 295 阅读 · 0 评论 -
C++中struct和class的区别
http://blog.youkuaiyun.com/xdrt81y/article/details/17143801一、 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。 struct能包含成员函数吗? 能! struct能继承吗? 能!! str转载 2015-08-30 23:28:15 · 314 阅读 · 0 评论 -
10道C++输出易错笔试题收集
http://www.cnblogs.com/lanxuezaipiao/p/4148155.html第一部分:题目如下函数,在32 bit系统foo(2^31-3)的值是:() int foo(int x) { return x&-x; }A:0 B: 1 C: 2 D: 4运算符优先级 unsigned char i=0转载 2015-08-03 22:37:17 · 406 阅读 · 0 评论 -
腾讯后台开发面试题--整理2
1)tcp三次握手的过程,accept发生在三次握手哪个阶段?2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?3)const的含义及实现机制,比如:const int i,是怎么做到i只可读的?4) valitale的含义。5)OFFSETOF(s, m)的宏定义,s是结构类型,m是s的成员,求m在s中的偏移量。原创 2015-09-05 01:17:11 · 742 阅读 · 0 评论