易截截图软件、单文件、免安装、纯绿色、仅160KB

c new

C++ new用法相关经验总结
作者: 佚名,  出处:IT专家网, 责任编辑: 谢妍妍, 2010-04-16 07:00
  C++ 编程语言中有一种叫做new的术语。不过这一概念是比较模糊的,有些人把它理解为new函数,但是有的人又会把它理解为new运算符。那么它的真正含义又是如何的呢?在这里我们将会通过对C++ new用法的介绍,帮助大家一起分析一下。
  C++ 编程语言中有一种叫做new的术语。不过这一概念是比较模糊的,有些人把它理解为new函数,但是有的人又会把它理解为new运算符。那么它的真正含义又是如何的呢?在这里我们将会通过对C++ new用法的介绍,帮助大家一起分析一下。
  C++ new用法之一 new运算符
  最常用的是作为运算符的new,比如:
  string *str = new string(“test new”);
  作为运算符,new和sizeof一样,是C++内置的,你不能对它做任何的改变,除了使用它。
  new会在堆上分配一块内存,并会自动调用类的构造函数。
  C++ new用法之二 new函数
  第二种就是new函数,其实new运算符内部分配内存使用的就是new函数,原型是:
 void *operator new(size_t size);
  new函数返回的是一个void指针,一块未经初始化的内存。如你所见,这和C语言的malloc行为相似,你可以重载new函数,并且增加额外的参数,但是必须保证第一个参数必须是size_t类型,它指明了分配内存块的大小,C++允许你这么做,当然一般情况下这是不必要的。如果重载了new函数,在使用new操作符时调用的就是你重载后的new函数了。
  如果使用new函数,和语句string *str = new string(“test new”)相对的代码大概是如下的样子:
  1.string *str = (string*)operator new(sizeof(string));
  2.str.string(“test new”);
  3.// 当然这个调用时非法的,但是编译器是没有这个限制的
  这还不算完,还有第三种的new存在。
  C++ new用法之三 placement new
  第三种,placement new,这也是new作为函数的一种用法,它允许你在一块已存在的内存上分配一个对象,而内存上的数据不会被覆盖或者被你主动改写,placement new同样由new操作符调用,调用格式是:
 new (buffer) type(size_t size);
  先看看下面的代码:
  4.char str[22];
  5.int data = 123;
  6.int *pa = new (&data) int;
  7.int *pb = new (str) int(9);
  结果*pa = 123(未覆盖原数据),而*pb = 9(覆盖原数据),可以看到placement


相关文档:

通讯录C程序代码

#include <stdio.h>
#include <string.h> /* 程序多次调用biodkey(),应包含头文件bios.h */
#include <bios.h><br>/* 程序多次调用clrscr(),应包含头文件conio.h */
#include <conio.h>
#define MAX 100
#define PAGE 2
#define PRINT1 printf("------------------------------ ......

C/C++ 核心技术 总结1

第二章 数据类型
 
一、数据类型分类
 
1 联合类型
2 函数类型
3 数量类型
3.1算术类型
     ① 基本数据类型
            整型(包括char)
            浮点型 ......

对C宏定义的小小实践

用宏实现一个swap功能
#include <stdio.h>
#include <stdlib.h>
#define SWAP( TYPE,ARG1,ARG2 ) \
void TYPE##Swap( TYPE *p, TYPE *q ) \
{ \
TYPE tmp = *p; \
*p = *q; \
*q = tmp; \
} \
TYPE##Swap(&ARG1,&ARG2 ......

汉诺塔算法的递归与非递归的C以及C++源代码



汉诺塔算法的递归与非递归的C以及C++源代码
By Minidxer | January 30, 2008
汉诺塔(又称河内塔)问题其实是印度的一个古老的传说。
开天辟地的神勃拉玛(和中国的盘古差不多的神吧)在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号