随笔分类 -  C/C++

摘要:来自百度百科http://baike.baidu.com/view/536145.htmstatic成员必须在类外初始化C++中的static1、面向过程的static静态全局变量有以下特点: 该变量在全局数据区分配内存; 未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0); 静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;全局变量和全局静态变量的区别: 1)全局变量是不显式用static修饰的全局变量,但全局变量默认是动态的,作用域是整个工程,在一个文件内定义的全局... 阅读全文
posted @ 2012-10-01 17:13 logzh 阅读(286) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/graphics/archive/2010/07/07/1772733.html一:为什么静态成员不能在类内初始化在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样class A{ private: static int count ; // 类内声明};int A::count = 0 ; // 类外初始化,不必再加static关键字为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导致每个对象都包含该静态成员,这是矛盾的。二:什么在类内初始化能在类中初始化的成员只有一... 阅读全文
posted @ 2012-09-24 11:01 logzh 阅读(320) 评论(3) 推荐(0)
摘要:1 // 2 int *y=new int; 3 *y=10; 4 5 //或 6 int *y=new int(10);//★ 7 8 delete y; 9 10 //★★★一维数组11 12 //★★★这里和上面构造函数赋值不一样,这是申请10个空间13 int *y=new int[10];14 y[0]=15 .......16 y[10]=17 18 delete [] y;19 20 //★★★二维数组21 22 template <class Type>23 void make2DArray(Type ** &x, int rows, int cols)24 阅读全文
posted @ 2012-07-14 23:38 logzh 阅读(158) 评论(0) 推荐(0)
摘要:sizeof()不是函数。32位系统下:bool 1(C没有bool类型)char 1short 2int 4long 4float 4double 8sizeof(指针) 4 如:int* 4,char*4,double* 4。。。char ch[]={"zhang"}; sizeof(ch)=61 void Func(char a[100])2 {3 cout<< sizeof(a)<<endl;//4字节,而不是100字节,数组退化为指针!《高质量C/C++编程7-3-3》4 }特别注意,类和结构体的大小(内存对齐和填充的概念), 1 stru 阅读全文
posted @ 2012-02-24 22:11 logzh 阅读(2306) 评论(0) 推荐(0)
摘要:【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。【规则5-2-1】在C++ 程序中只使用const 常量而不使用宏常量,即const 常量完全取代宏常量。C++ 语言可以用const 来定义常量,也可以用 #define 来定义常量。但是前者比后者有更多的优点:(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边 际效应)。(2) 有些集成化的调试工具可以对 const 常量进行调试,但是不能对 阅读全文
posted @ 2011-06-11 19:43 logzh 阅读(229) 评论(0) 推荐(0)