C++
文章平均质量分 64
lannykuaile
这个作者很懒,什么都没留下…
展开
-
C++中各种类型的成员变量的初始化方法(转)
----------------Test.h----------------------------#pragma onceclass Test{private : int var1;// int var11= 4; 错误的初始化方法 const int var2 ;// const int var22 =22222; 错误的初始化方法转载 2013-12-28 20:52:21 · 459 阅读 · 0 评论 -
每天学习一点string.h
面试中总会遇到让写字符串的caozu原创 2014-05-09 21:11:43 · 454 阅读 · 0 评论 -
operator类型转换函数
type conversion operator可以将类类型转换成原创 2014-06-08 22:34:12 · 925 阅读 · 0 评论 -
static_cast与dynamic_cast
一 C语言中存在着两种类型转换:隐式转换和显式转换隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成char ch;int i = ch;显示转换:在类型前增加 :(Type)变量 对变量进行的转换。用户显式增加char *pc = (char*)pb;void *ps = (void*)pa;二 C++中的类型转换转载 2014-06-09 21:17:49 · 492 阅读 · 0 评论 -
memset和memcpy、memmove实现
void* _memset(void* des, const unsigned char c, size_t count){assert(des != NULL);char* temp = (char*)des;while(count-->0){*temp++ = c;}return des;}void* _memcpy(void* des, voi原创 2014-05-28 18:54:41 · 589 阅读 · 0 评论 -
面试题:一个短小强悍的C++面试题---违背Effective C++的条款37:绝不重新定义继承而来的缺省参数值
转自:http://blog.csdn.net/xhu_eternalcc/article/details/21601477转载 2014-07-25 21:28:50 · 539 阅读 · 0 评论 -
STL hash_map 底层初探
hash_map 底层是采用hashtable实现的,在讲解hash_map之前,先看一下hash_table的原理。(1)hashtable数据结构hash table表格内的元素称为桶(bucket),而由桶所链接的元素称为节点(node),其中存入桶元素的容器为stl本身很重要的一种序列式容器——vector容器。之所以选择vector为存放桶元素的基础容器,主要是因为vec转载 2014-07-27 17:28:20 · 738 阅读 · 0 评论 -
求取第K大的数或者前K大的数
这个题目比较经典,ji原创 2014-06-11 22:39:45 · 770 阅读 · 0 评论 -
关于C++的基础易错知识(源于各种笔试题,自己要记得不断更新)
关于指针分配内存的题目:void GetMemory(char *p) { p = (char *)malloc(11); } int main(void) { char *str = "Hello"; GetMemory(str); strcpy(str,"Hello World"); printf("%s",原创 2014-05-10 19:31:18 · 605 阅读 · 0 评论 -
数组和指针的区别
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较转载 2014-06-21 21:46:48 · 397 阅读 · 0 评论 -
“浅拷贝”与“深拷贝”
C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:[cpp] view plaincopyclass Rect { private: int width; int height; }; R转载 2014-06-21 22:24:37 · 333 阅读 · 0 评论 -
给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法
给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法;要求:O(1)空间复杂度和O(n)的时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等)虽然不能使用临时变量,但是可以用数组本身的某一个元素,不让用除法,应该想到迭代的用乘法,而且b中每个转载 2014-04-08 15:18:02 · 714 阅读 · 0 评论 -
C++基础 - 内置类型和类类类型的初始化
#include #include #include using namespace std;int global_n; // 函数体外的内置类型变量被自动初始化为0//////////////////////////////////////////////////////////////////////////// 系统将提供一个默认构造函数来构造C转载 2013-12-28 21:49:20 · 528 阅读 · 0 评论 -
C++ Primer之最佳实践
1. 语言本身并没有限制变量名的长度,但考虑到将会阅读和/或修改我们的代码的其他人,变量名不应太长2. 命名习惯最重要的是保持一致3. 初始化不是赋值。初始化是指创建变量并给它赋初值,而赋值则是擦除对象的当前值并用新值代替4. 变量必须且仅能定义一次,而且在使用变量之前必须定义或声明变量5. 通常把一个对象定义在它首次使用的地方是一个很好的办法6. 头文件应转载 2013-12-29 21:28:34 · 1067 阅读 · 0 评论 -
C++箴言:声明为非成员函数的时机(转)
我谈到让一个类支持隐式类型转换通常是一个不好的主意。当然,这条规则有一些例外,最普通的一种就是在创建数值类型时。例如,如果你设计一个用来表现有理数的类,允许从整数到有理数的隐式转换看上去并非不合理。这的确不比 C++ 的内建类型从 int 到 double 的转换更不合理(而且比 C++ 的内建类型从 double 到 int 的转换合理得多)。在这种情况下,你可以用这种方法开始你的 Rati转载 2014-01-02 19:22:48 · 458 阅读 · 0 评论 -
深入探讨C++中的引用(转)
摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面透彻地阐述。 关键词:引用,const,多态,指针 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解转载 2014-01-02 20:19:21 · 395 阅读 · 0 评论 -
重载运算符函数的选择
正如C++ Primer中的例子,当重载 + 时不需要设置为友元,因为可以用public成员operator += 实现,这说明:首先,重载运算符为成员函数时相当于提供一个接口,一定是public的;其次,就是不是一定要声明为friend的,要据具体情况而定。 当重载运算符为成员函数时,如果遇到调用时第一操作数是数字,则会因为不能进行类型转换而报错,这时通常建议重载为友元函数。当然也可以原创 2014-01-02 20:18:38 · 575 阅读 · 0 评论 -
new和malloc(转)
1、malloc与free是C++/C语言的内存分配标准库函数,属于stdlib库;new/delete是C++的操作运算符。它们都可用于申请动态内存和释放内存。 2、 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不转载 2014-02-22 20:07:58 · 639 阅读 · 0 评论 -
桶排序
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。 例如要对大小为[1转载 2014-02-27 21:19:32 · 394 阅读 · 0 评论 -
debug版本和release版本的区别
这是从百度知道里面截出来的,mark一下,要好好记住。Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,转载 2014-03-06 13:39:24 · 520 阅读 · 0 评论 -
const修饰指针和引用的用法
const修饰指针和引用的用法,对于初学C++的人直是讳莫如深,不知所云. 一旦你了解了其用法,一切便不值一哂了.下面我为读者一一释疑: 大致说来其可分为三种情况: const修饰指针,const修饰引用,const修饰指针的引用. 1.const修饰指针 const修饰指针又可分为三种情况: a.const修转载 2014-04-04 10:54:54 · 1594 阅读 · 0 评论 -
浅析C++中的this指针
有下面的一个简单的类:class CNullPointCall{public: static void Test1(); void Test2(); void Test3(int iTest); void Test4();private: static int m_iStatic; int m_iTest;};转载 2014-04-06 16:34:43 · 433 阅读 · 0 评论 -
华为题目(四则运算)
#include #include #include #include using namespace std;stack opnd;stack optr;bool IsOptr(char c){ string optr = "+*-/()"; if(optr.find(c) == string::npos) return false; return true;}ch原创 2014-08-06 21:10:33 · 611 阅读 · 0 评论