上一篇学习了C++中的输入输出方法:
输出:<<
输入:>>
那么,<<、>>后面可以放哪些数据类型呢?
刚刚接触C++,所以这里不再深究。
下面学习C++内置数据类型:
int ival = 1024;
double dval = 3.14159;
float fval = 3.14159;
bool result = ival2 == ival3;
等
在内置数据类型和标准库类的类型之间是复合类型(compound type):指针和数组
下面是C++Primer中的原话:
“虽然C++对数组类型提供了内置支持,但是这种支持仅限于用来读写单个元素的机
制。C++不支持数组的抽象abstraction ,也不支持对整个数组的操作。我们有时会希望对
整个数组进行操作。例如把一个数组赋值给另外一个数组,对两个数组进行相等比较或
者想知道数组的大小size 。例如给出两个数组我们不能用赋值操作符把一个数组拷
贝到另一个中去
int array0[ 10 ], array1[ 10 ];
// 错误不能直接把一个数组赋值给另一个数组
array0 = array1;”
这表明C++数组是一个内置数据类型,与类是有很大区别的。
问题:为什么内置数组类型不支持数组之间的赋值,支持这种操作需要什么信息?
数组本质上在内存中是一个段地址,数组名表示该段地址的起始地址。那么把两个起始地址进行赋值,也即把常量进行赋值给常量,显然是不合法的!!所以这个问题比较弱智!
动态对象的分配和释放:
new
delete
例如,
int *pint = new int( 1024 );
int *pia = new int[ 4 ];分配了一个含有四个整数元素的数组。不幸的是,我们没有办法给动态分配的数组的每
个元素显式地指定一个初始值。
// 删除单个对象
delete pint;
// 删除一个对象数组
delete [] pia;
内存泄漏(memory leak):
内存泄漏是指一块动态分配的内存,我们不再拥有指向这
块内存的指针。因此我们没有办法将它返还给程序供以后重新使用。(现在大多数系统提供
识别内存泄漏的工具可以向系统管理员咨询)
=========================
本文介绍了C++中的基本输入输出方法、内置数据类型,并探讨了数组作为一种复合类型的限制及其原因。此外,还讲解了动态对象的分配与释放,以及如何避免内存泄漏等问题。

被折叠的 条评论
为什么被折叠?



