随笔分类 -  C/C++

随性的一些C++基础方面的总结
摘要:C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast 新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++风格的强制转换其他的好处是,它们能 更清晰的表明它们要干什么。程序员只要扫一眼这样的代码,就能立即知道一个强制转换的目的。 ... 阅读全文
posted @ 2015-05-07 11:30 阿木木在发呆 阅读(250) 评论(0) 推荐(0)
摘要:1.尽量以const,enum,inline替换define。2.旧式的编译器可能不允许static在其申明式上获得初值。此外所谓的‘in-class’初值设定也许只针对整数常量进行,要是你的编译器不支持上述语法,可以将初值放在定义式。要是数组无法初始化时可以考虑使用类中的枚举值。3.如果成员变量是... 阅读全文
posted @ 2015-05-04 10:36 阿木木在发呆 阅读(116) 评论(0) 推荐(0)
摘要:class BST{...};class BalanceBST:public BST{...};vvoid printBstArray(ostream &s,const BST array[],int numElements){ for(int i = 0;i < numElements;++... 阅读全文
posted @ 2015-04-07 23:19 阿木木在发呆 阅读(194) 评论(0) 推荐(0)
摘要:自我赋值发生在对象被赋值给自己时,例如: val = val; vec[i] = vec[j];//潜在的自我赋值(i=j) *p = *q;潜在自我赋值 class A { A& operator=(const A& rhs)//不安全的赋值版本 { delete p;//停止使用当前的对象 p = new P(rhs.p);//使用rhs的副本 ... 阅读全文
posted @ 2015-01-21 11:24 阿木木在发呆 阅读(177) 评论(0) 推荐(0)
摘要:一、C++默默编写并调用了哪些函数当你写下:class CEmpty{}这就好像你写下class CEmpty{public: CEmpty(){…} CEmpty(const CEmpty &rhs){…} ~CEmpty(){…} CEmpty& operator=(const CEmpty &... 阅读全文
posted @ 2015-01-16 11:15 阿木木在发呆 阅读(162) 评论(0) 推荐(0)
摘要:一、一个C++编译的程序占用的内存分为以下几个部分1、栈区:由编译器自动分配 存放函数的参数值,局部变量的值等,操作方式类似于数据结构中的栈。2、堆区:一般由程序员分配释放,若程序员不释放,程序结束时 可能 有系统收回。它与数据结构中的堆是两回事。分配方式类似于链表。3、全局区(静态区):全局变量和... 阅读全文
posted @ 2014-12-02 23:13 阿木木在发呆 阅读(3484) 评论(1) 推荐(0)
摘要:一、指向普通函数的指针 要符合两点要求: 1返回类型相同 2参数类型、个数、顺序相同 实例: int Max(int a,int b){ return a>b?a:b; } int (*pFun)(int a,int b); int _tmain(int argc, _TCHAR* argv[]){ pFun = Max; coutb?a:b; }}; int (A::... 阅读全文
posted @ 2014-12-02 20:35 阿木木在发呆 阅读(189) 评论(0) 推荐(0)
摘要:1.通过数组和下标实现的表达式可以等价的通过指针和偏移量实现。 例如: int a[]= {1,4,66,8}; *p = a; p = &a[0];//和上面一句等价 *(p+1) 和a[1]和*(a+1)是等价的 a+1和&啊&a[1]也是等价的。 2.数组作为函数参数在传参时会自动退化为普通指针 int Srlen(char string[]); 在此函数中若调用系统的字符串长度函数s... 阅读全文
posted @ 2014-12-02 19:18 阿木木在发呆 阅读(180) 评论(0) 推荐(0)
摘要:1、C/C++中字符串都是以’\0’结尾的。稍不留神就会造成字符串越界,例如: char str[10]; strcpy(str,”0123456789”); 一般在复制字符串时一定要为在字符串长度的基础上多申请一个字节内存给’\0‘ 2、看看一下代码会输出什么: char str1[] = "Hello ZCM";char str2[] = "Hello ZCM"; char *str3 =... 阅读全文
posted @ 2014-11-24 10:53 阿木木在发呆 阅读(284) 评论(0) 推荐(0)
摘要:先来体会下数组与指针的区别,看如下代码:int GetSize(int data[]){ return sizeof(data);}int _tmain(int argc, _TCHAR* argv[]){ int data[] = {1,2,3,4,5}; int size1 = sizeof(... 阅读全文
posted @ 2014-11-24 09:58 阿木木在发呆 阅读(129) 评论(0) 推荐(0)
摘要:class A{};sizeof(A)得到的不是0而是1,因为我们在申明类型实例的时候,它必须在内存中占有一定的空间,否则无法使用这些实例,具体占用多少内存由编译器决定,上面是我在VS2008上得出的结果。class A{char a;};这个sizeof出来的结果是1,不是4,在只有一个char型... 阅读全文
posted @ 2014-11-17 23:07 阿木木在发呆 阅读(138) 评论(0) 推荐(0)
摘要:今天看堆栈有关的算法时突然又想到了局部变量的压栈问题,在局部函数里面先定义的变量先压栈,按照所所需的大小分配内存,先压栈的变量地址会大些,这个不知是否跟编译器的实现有关,问题来了 int n = 1; int m = 2; int k = 3; int *p = &k; cout<<&n<<endl;cout<<&m<<endl;cout<<&k<<endl;cout<<sizeof(int)<... 阅读全文
posted @ 2014-11-09 11:31 阿木木在发呆 阅读(495) 评论(0) 推荐(0)
摘要:const的一些总结采用const符号常量写出来的代码更容易维护,有些函数只读不写:1 常变量: const 类型说明符 变量名2 常引用: const 类型说明符 &变量名3 常成员函数: 类名::fun(形参) const4 常量和指针用法一:常量const变量取代了C中宏常量的方式const ... 阅读全文
posted @ 2014-11-03 14:28 阿木木在发呆 阅读(447) 评论(0) 推荐(0)