【C++】new和delete表达式

new和delete表达式可以用来动态创建和释放单个对象,也可以用来动态创建和释放动态数组。

定义变量时,必须指定其数据类型和名字。而动态创建对象时,只需指定其数据类型,而不必为该对象命名。new表达式返回指向新创建对象的指针,我们通过该指针访问对象:
    int i; //named, uninitizlized int variable
    int *pi = new int; //pi points to dynamically allocated, unamed, uninitizlized int
    这个new表达式在自由存储区中分配创建了一个整形对象, 并用该地址初始化。

1. 动态创建的对象初始化

动态创建的对象可用初始化变量的方式实现初始化:

  1. int i(1024);
  2. int *pi = new int(1024);
  3. string s(10, ‘9‘);
  4. string *ps = new string(10,‘9‘);

来自为知笔记(Wiz)

时间: 2024-08-25 08:41:10

【C++】new和delete表达式的相关文章

C++ Primer 学习笔记与思考_9 表达式中过的那些容易忽略的地方

(一)移位操作符用于IO 输入输出标准库分别重载了位操作符>>和<<用于输入和输出.并且像其他的二元操作符一样,移位操作符也是左结合的,这也正好说明了我们为什么可以把多个输入输出操作连接为单个语句: cout<<"hi"<<"there "<<endl; 将其执行为: ( (cout<<"hi")<<"there" )<<endl;

[转]C++中关于new和delete的使用

转载的地址 近一直在啃 C++ Primer 中文版第4版,发现 C++中new和delete应用遍布全书,现对其使用作简单总结.在C++中,可以使用new和delete动态创建和释放数组或者单个对象,现在对它们的使用一一道来. 1.创建动态数组 数组类型的变量有三个重要的限制:数组长度固定不变,在编译时必须知道它的长度,数组只在定义它的块语句中存在.对于动态分配的数组,虽然长度是固定的,但是动态分配的数组不必在编译时知道其长度,可以(通常也是)在运行时才确定数组长度:同时,动态分配的数组一直存

new/delete 和 new[]/delete[]

new/delete 和 new[]/delete[] 本文以如下的base为例,进行调试和验证,new 和delete,以及new[]和delete[]都是标准库函数,通过重载上述四个函数. 1 class base{  2 public:  3     base(void){  4         printf("base\n");  5     }  6  7     static void* operator new(size_t cb,int nBlockUse,const 

C++primer第五章 表达式

表达式由一个或多个操作数通过操作符组合而成.最简单的表达式仅包含一个字面值常量或变量.较复杂的表达式则由操作符以及一个或多个操作数构成. 每个表达式都会产生一个结果. 5.1. 算术操作符 表 5.1 按优先级来对操作符进行分组——一元操作符优先级最高,其次是乘.除操作,接着是二元的加.减法操作. 算术操作符 +.-.* 和 / 具有直观的含义:加法.减法.乘法和除法.对两个整数做除法,结果仍为整数,如果它的商包含小数部分,则小数部分会被截除: int ival1 = 21/6; // inte

[c++primer][05]表达式

5.1 算术操作符 算术类型具有有限的长度,要注意计算后溢出的现象 求模操作(%)的操作数必须为整型 当两个操作数只有一个为负数时,操作结果的正负取决于机器. 5.2 关系操作符和逻辑操作符 关系.逻辑操作符是使用算术或指针类型的操作数,并返回bool类型的值. 短路求值 && 和 || 总是在仅靠左操作数无法确定结果时,再计算右操作数. 5.3 位操作符 用于整型和bitset类型 输入输出标准库(IO library)分别重载了位操作符>>和<<用于输入和输出,

C++_系列自学课程_第_10_课_表达式_《C++ Primer 第四版》

程序设计语言中大部分程序都在进行表达式的求值操作, 例如求两个数的和,求一个表达式的逻辑结果,或者通过输入输出表达式语句进行输入和输出. 这里我们对表达式进行讨论. 一.表达式 1.表达式 表达式由一个操作数或者多个操作数同操作符组合而成: 字面值是一个最简单的表达式.  表达式都会产生一个结果,如果表达式中没有操作符,则表达式 的值是操作数本身, 如果表达式中有操作符,则表达式的结果是操作符对操作数进行操作后的结果. 一般而言表达式的返回的是右值,不能给表达式赋值, 但可以获取表达式的值. E

Effective C++:条款16:成对使用new和delete时要采取相同形式

(一) 先看下面的代码: string* stringArray = new std::string[100]; ... delete stringArray; 这样的做法是错误的,因为stringArray所含的100个string对象中的99个可能并没有被适当地删除,因为它们的析构函数很可能没有被调用. (二) 使用new时发生的事情: (1)内存被分配出来: (2)针对此内存会有一个或更多个构造函数被调用: 使用delete,也有两个动作: (1)针对此内存会有一个或更多个析构函数被调用:

C++ delete 和 delete []

简单结论: new delete new [] delete [] 文章 : 对 delete [] 的声明 void operator delete[] (void* ptr) throw (); void operator delete[] (void* ptr, const std::nothrow_t& nothrow_constant) throw(); void operator delete[] (void* ptr, void* voidptr2) throw(); 对new 的

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性