C++学习笔记的零零碎碎

一、名称空间

什么是名称空间:是C++的一项特性(废话!0.o)。

自己看书看了好久不太懂名称空间是什么?为什么这样用?难道不能直接包含头文件后使用里面的标识符、函数、声明的变量?为什么要多此一举?

经过一番百度总算搞明白来由了,这里我用简单的自己的话语描述一下(不太严谨)!

我们都知道,在C语言的,头文件包含很多定义的变量、声明的函数等,包含头文件后就可以拿来用,但是随着程序越来越庞大,类库等也越来越多,就会出现一些问题:

打个比方,小明写了一个头文件1.h,里面有定义一个函数add(),而不巧小红也写了一个头文件2.h,也要定义一个add()函数,那么我的程序要包含两个头文件时,使用add()函数究竟是使用谁的呢?就会引发错误冲突。名称空间就是用来精确的圈定头文件中起作用的部分的。

例子,using namespace std   使用std中所有内容,全局通用

当然一般情况下最好不要这样用,因为你这样是爽了,别人要用std中已经定义的一个对象的名称怎么办?所有可以进行精确指定,可以在文件前写using std::cout,若果不写,则在程序中写std::cout、std::sin等


忘记说明一点:C++中头文件没有以.h结尾,则需要使用空间名称编译指令来时头文件的定义对程序可用。



二、运算符重载

在前面学习中,cout<<"你是大笨蛋"中,插入运算符<<看上去像左移运算符<<,同一个运算符有不同的含义,这就是运算符重载。

相似的有&:地址运算符、按位AND运算

*即表示乘法又表示指针解除引用

C++允许用户重新定义运算符的含义。


2.1 指针

指针是一个变量,这个变量存储了一个地址,这个地址所在的地方装着目标量

指针的定义比如  int *a;a是一个指针,*a的值表示指针a存储地址的地方装载的值


三、new与delete内存管理

在书中有描述指针时提到了一点,就是定义指针时必须初始化其值,不然将不知道指针指向何处,这可能造成危险。

比如 int * a;

*a=123;

这种写法时,指针变量天知道装着什么地址,万一其他程序有用到,再被改写成123.。。。

所以第二句可以换成a=0x654654564等自己想要的地址进行解决。

上述这些方法一般是将变量的地址赋给指针,在C++中使用new运算符进行更简单的分配内存的方式

int * a = new int;

仅此一句,定义了一个指针a,还找了一个适合整形变量的内存块的地址赋给了指针a。没有变量名。简单方便。

使用new还有一个必须要注意的是得成对使用delete a;释放内存,不然,就无法调用被new占用的内存了。


接下来说明一下数组使用new分配内存的用法以及好处

1.定义方式

int * a = new int [10]

2.释放方式

delete [] a;

常规建立数组的方式叫做静态联编,而使用new的方式叫做动态联编,前者是在程序编译时为数组分配内存,后者是在程序运行时为数组分配内存。


这里,指针地址装载数组第一个元素的地址,可以使用a[2]来指定第三个元素。

指针与数组的一些特性:

指针装的是地址,自身是变量,指针进行+1操作时,值会增加其指向的数据类型的字节数

new用来创立数组通用可以用来创建结构也可以用来创建类

比如name是一个结构体名,则 name * pa = new name; 定义了一个结构体不过没有名字,那么没有名字怎么使用运算符.去指定成员呢?这时可以使用->运算符。

pa->xxx 即可。





四、cout函数输出指针数据

如果a是一个指针,那么cout 《a 会输出什么呢?

如果是非字符指针,那么输出地址,反之输出字符。那么要输出字符指针的地址怎么办,可以使用cout《(int *)a,使用强制类型转换符就可以了。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值