栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++中特殊的知识点(持续更新)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++中特殊的知识点(持续更新)

gcc和g++的区别:
  • GCC:GNU Compiler Collection(GUN 编译器集合)可以编译多种语言
  • gcc和g++是其中的两种:这两个只是驱动器,并不是编译器,只是会调用GNU

gcc

g++

编译器类型C编译器C++编译器
对.c和.cpp文件分别当做c和cpp文件编译统一当做cpp文件编译
STL而gcc不会自动链接STLg++会自动链接标准库STL
宏的使用

.c 可使用的预定义宏是比较少

.cpp会加入一些额外的宏

都会加入一些额外的宏
对STL的使用需要加参数 –lstdc++不需要额外加参数
malloc,calloc,realloc,new 申请空间的区别

malloc:void *malloc(unsigned int size)

在内存的动态分配区域中分配一个长度为size的连续空间,分配成功则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会初始化,存储的是一些数据数据

calloc:void *calloc(unsigned int num,unsigned int size)

按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。

calloc申请内存空间后,会自动初始化内存空间为 0

realloc: void *realloc(void *ptr,unsigned int size)

动态分配一个长度为size的内存空间,并把内存空间的首地址赋值给ptr,把ptr内存空间调整为size,申请的空间不会初始化

new :是动态分配内存的运算符,自动计算需要的空间,同时调用类的构造函数,对内存空间进行对类的初始化。动态分配内置类型推导是否自动初始化取决于变量定义的位置,在函数体外定义的变量都初始化为0,在函数体内定义的内置类型变量都不进行初始化

typeid关键词: 用来获取一个表达式的类型信息 typeid操作符的返回结果是名为 type_info 的标准库类型的对象的引用 

typeid的用法:

  1. typeid(表达式)
  2. typeid(数据类型)

 type_info 类注意的事项:

  1. 这个类的构造函数是private的,因此用户不能直接构造这样的对象,只能通过typeid()函数来获取这个对象
  2. 不能直接赋值 =,在type_id中为私有类型

  type_info 类的用法:

  1. ==(判断两个类型是否相同)

  2. !=(判断两个类型是否不同)
  3. name()(获取数据类型)
  4. raw_name() 用来返回名字编码算法产生的新名称
  5. hash_code() 用来返回当前类型对应的 hash 值(不同编译器可能不同)

 以下说明name()的用法

class person
{

};
int main()
{
	int a = 10;
	cout << typeid(a).name() << endl;
	cout << typeid(int).name() << endl;//可以为关键词
	cout << typeid(25.1+1).name() << endl;//可以为表达式
	person p;
	cout << typeid(p).name() << endl;//可以对类使用
	//因为typeid返回的是type_info,可以用type_info来接收结果
	const type_info& P = typeid(int);
	cout << P.name() << endl;
	return 0;
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1010450.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号