指针new不new
最近开始工作了,没想到刚入职就要用两年没用过的C++。 一直在写python的人竟然对一些基础的C++知识都忘记的一干二净,该打啊。。。。
1 不要使用为初始化的变量
你永远不知道编译器会对这种未初始化的变量做什么,所以记得使用之前要进行初始化。
2 指针与引用
指针保存的是地址,通过解指针可以得到对应的内容。 引用可以看作是解指针之后。
2 指针的new还是不new
指针保存的是某个内存段的地址,这个内存上的内容可以通过解指针访问。常使用的创建方式有两种:new与非new。(对应C中的malloc)
总体来讲: new过的指针仍然是指针,与非new指针的区别就是一个保留在堆上(需要手动释放delete free); 一个保留在栈上(系统释放,尤其是作为函数内部的局部变量时候,函数结束就会被释放);
通俗的说:在创建指针的时候,如果你希望这个指针在当前所属函数结束后继续使用,那么使用new来创建。否则使用非new自动创建就行。(当然也可以new的方式创建,然后在函数结束前手动释放:))。
指针充当类成员函数时: 对于一个类来说,同样有两种方式创建:new与非new。这里讨论指针充当类成员的问题:不论是使用new还是非new创建类,它只是在内存中分配了一个内存块。这个内存块中有一个区域只用来放指针的。 在类的构造函数中,如果不对这个指针进行初始化,那么它也是未定义的。也是无法直接使用的。 假设我们在另外一个函数中采用非new的方式生成了一个指针,并把它付给类成员指针,那么等这个函数结束后,这个指针指向的区域就会被自动释放,此时类成员函数就会指向一个被释放掉的内存块。因而如果需要在函数结束后仍然使用这个指针的内容,就应当将其采用new的方式进行创建。