`
aigo
  • 浏览: 2542507 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

我的C++笔记

 
阅读更多

1,Map的key值是不能重复的,char *比较的是地址,所以认为key值相同,所以你只能插入一个元素

若要用char*做key,需要重载操作符 (T1, T2),也就是map的第三个参数,当然你用std::string做key的话,可以不用重载这个操作符。

 

2,char转int:

char a = '1';

int b = a-'0';

cout<<b<<endl;

 

4,使用string时需要命名空间std

 

5,联合(union)的成员对象不允许有构造函数、析构函数、虚函数

 

6,STL的string内部使用了内存池,不用担心其new、delete影响性能

 

7,静态成员函数可以当作全局函数用,其函数地址都可以传给void*

8,C++的try-catch异常捕获有两种:同步模式和异步模式。其中前者不能捕获内存访问错误,后者可以捕获内存访问错误。 

/EHs是启用同步模式。(同   /GX)       

/EHa是起用异步模式。   

要在Release版本使用异步模式,需要加上/Eha选项,此时可以捕获到楼主的异常。 

9,C语言中对于内置类型而言,pass-by-value通常比pass-by-reference高效。但在C++中,优于用户自定义(user-defined)构造函数和析构函数的存在,pass-by-reference-to-const往往更好。

 

【2013-8-10】

10,创建一个静态的栈对象时,比如一个静态的全局栈变量,如果这个对象内部定义了一个this指针,那么不要在自身的构造函数中设置这个this指定,要在这个对象变量创建完毕以后在设置this指针,因为这两个时刻this的地址不相同

 

【2013-9-10】

11,要想让vector.push_back()对象时调用改对象的拷贝构造函数,需要显示调用构造函数,例如:

A类有构造函数A(int a);,那么put的时候应该这样:vector.push_back(A(1111));  

A a(111);  vector.push_back(a);这种方式不会调用拷贝构造函数

 

【2014-03-12】

12,c++类静态成员数组如何赋值?

在这个类中声明数组: 

static int itest[10]; 

在含有类的非inline函数定义的文件中定义: 

int 类名::itest[10]={1,2,3,4}; ,

由于静态数据成员在程序中只能定义一次,所以静态数据成员的初始化一般不应给放在头文件中 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics