c++ 学习备忘录

来源:互联网 发布:计算机 知乎 编辑:程序博客网 时间:2024/05/23 13:27

此备忘录是由于学校中教授的关于c和c++理论知识,和工作中遇到的一些学校没有涉及到的一些基础知识,此备忘录主要供自己查阅
1.c++中#define 遇到‘#’与‘##’关键字
      首先在进行宏定义时,如果是这样的语句:#define TOSTRING(x) #x而在后面的代码使用该宏,例如:cout<<TOSTRING(123456)<<endl;则相当于如下代码:cout<<"123456"<<endl;
      如果是进行宏定义时,如果时这样的语句:#define COMBINE(x) x ## 20171011 而在后面的代码中使用该宏,例如:int CONBINE(money);替换宏后的代码如下:int money20171011;
         !!!NOTE:当使用含有‘#’或‘##’的宏定义时,如果参数是另一个宏,则参数宏不会展开!解决此问题,只需要在其中间加一层转换宏即可;例如:#define STR(x) #x  改为#define _STR(x) #x   #define STR(s) _STR(s)

2.C++中new/delete 和 malloc/free的理解

从电脑开机后,物理内存中的任何位置,都是能被读写的(只要操作系统的内存管理模块没发现),如果发现你访问的内存已经被人申请,那么OS的内存管理模块就会执行相应的操作;new和malloc都是向内存管理员去申请一块地方,而delete和free则是告诉内存管理员我放弃对申请的地方的所有权,但是内存的内容不会被处理,仍会保持原样(只要没有程序再申请这块内存之前)如果是类对象的delete操作,则会在放弃所有权之前去执行析构函数,所以内存内容取决于你析构函数执行之后的模样。

3.VS中无扩展名文件(OSG头文件)显示代码高亮的方法记录

打开VS-->点击工具-->选项-->文本编辑器-->文本扩展名-->将无扩展名文件映射到【  】设置即可实现,如已经打开的文件要重新打开才能高亮显示。



原创粉丝点击