ue4开发之C++基础积累
1)auto 类型说明符
分析:其让编译器通过初始值来推算分析表达式所属的类型,注意!:auto定义的变量必须有初始值!如,auto item1;(×) auto item2 = val1 + val2;(√) 另外auto也能在一条语句中声明多个变量,但要求语句中所有变量的初始基本数据都必须一样,如下:
auto i = 0, *p = &i; (√,auto <==> int)
auto sz = 0, pi = 3.14;(×,sz<==>int,pi<==>float)
【补:复合类型(引用/指针),常量和auto
①当引用被用作auto初始值,真正参与初始化实质是引用对象的值。 如 int i = 0,&r = i; auto a = r;// a 是一个整数
②auto一般会忽略顶层const,保留底层const,如:
又引用类型的auto,
谨记一点!:符号&和*是属于修饰某个声明符,而非基本数据类型的一部分,则初始值必须是同一种类型,
】
2)new 和 数组
int *p = new int[42]; // new请求分配一定数目的对象的数组,成功后返回指向第一个对象的指针。该例中方括号中的大小必须是整型,但不必是常量。同理,可以用类型别名的方式定义,
new T[]分配的内存为“动态数组”。当用new分配一个数组时,返回得到的是一个数组元素类型的指针,而不是一个数组类型,故不能对动态数组调用begin或end,也不能使用for语句来循环遍历。 数组初始化的规则如下:
另外,动态分配一个空数组是ok的。如 char *cp = new char[0]; //正确,new返回一个合法的非空指针,以保证与new返回的其他任何指针都不同,但cp不能解引用。
释放动态数组,大家已经都知道new - delete 要成对出现,则这里也是用delete,但特殊的是 指针前要加上一空方括号对 []
销毁pa指向的数组中的元素,并释放对应内存,按逆序销毁,即最后一个元素先销毁,然后倒数第二个。
注意!:在delete一个动态数组指针时忘记方括号,或delete一个单一对象的指针时使用了方括号,编译器很可能不会给出警告,但在程序执行过程中会没有任何警告情况下发生异常。
简单记忆,关键还是“ 成对 ”,即new 时带了 [] ,delete也对应带上 [] 就行(即使是类型别名定义也不例外),如:
3)标准库类型 string
string表示可变长的字符序列,其定义在命名空间std中,使用前必须包含对应的头文件。因此用string关键字定义时要码:
#include <sting> using std::string;
定义和初始化 string 对象(包括直接初始化和拷贝初始化)
4)