当前位置: 首页 > news >正文

管理公司网站一般做什么网站注册账号

管理公司网站一般做什么,网站注册账号,不会写代码如何做网站,装修网站设计需求说明分析下载文档在C中动态内存的分配技术可以保证程序在允许过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也称为堆。 申请和释放过程一般称为建立和删除。 在C程序中,建立和删除堆对象使用两个运算符&…

在C++中动态内存的分配技术可以保证程序在允许过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也称为堆。 申请和释放过程一般称为建立和删除。

在C++程序中,建立和删除堆对象使用两个运算符:new和delete。

1.运算符new的功能是动态分配内存,或者称为动态创建堆对象,语法形式为:

new 数据类型(初始化列表参数);

该语句在程序运行过程中申请分配用于存放指定类型数据的内存空间,并根据初始化参数列表中给出的值进行初始化。如果内存申请成功,new运算符便返回一个指向新分配内存首地址的类型的指针,可以通过这个指针对该内存空间进行访;如果申请失败,会抛出异常。

(1)对于基本类型的对象

如果建立的对象是一个基本类型的变量,初始化过程就是赋值,例如:

int *p;
p=new int(2);

动态分配了用于存放int型数据的内存空间,并将初值2存入该空间中,然后将首地址赋给指针p。

【注意】对于基本数据类型,如果不希望在内存分配后设定初值,可以把括号省去,例如:

int *p=new int;

如果保留括号,但括号中不写任何数值,则表示用0对该对象初始化,例如:

int *p=new int();

(2)对于类类型的对象
要根据初始化参数列表的参数类型和个数调用该类的构造函数。

在用new建立一个对象时,如果该类存在用户自定义的默认构造函数,则“new T”和“new T()”这两种写法的效果时相同的,都会调用这个默认的构造函数。但若用户没有定义默认的构造函数,使用“new T”创建对象时,会调用系统生成的隐含的默认构造函数;使用“new T()”创建对象时,系统除了执行默认构造函数会执行的操作外,还会为基本数据类型和指针类型的成员用0赋初值,而且这一过程是递归的。也就是说,如果该对象的某个成员对象也没有用户自定义的默认构造函数,那么对该成员的基本数据类型和指针类型的成员,同样会被以0赋初值。

2.运算符delete是用来删除由new建立的对象,释放指针所指向的内存空间。

格式为:

delete 指针名;

如果删除的是对象,该对象的析构函数将被调用。对于new建立的对象,只能用delete进行一次删除操作,如果同一内存空间多次使用delete进行删除将会导致运行错误。

【注意】用new分配的内存,必须用delete加以释放,否则会导致动态内存分配的内存无法回收,使得程序占据的内存越来越大,这叫做“内存泄漏”。

【例】动态创建对象

class Point
{
public:Point() :x(0), y(0){cout << "调用默认构造函数" << endl;}Point(int x, int y) :x(x), y(y){cout << "调用构造函数" << endl;}~Point(){cout << "调用析构函数" << endl;}int getX() { return x; }int getY() { return y; }void move(int newX, int newY){x = newX;y = newY;}
private:int x, y;
};int main()
{cout << "创建第一个对象:" << endl;Point* p1 = new Point;//动态创建对象,没有给出参数列表,因此调用默认的构造函数delete p1;//删除对象,自动调用析构函数cout << "创建第一个对象:" << endl;Point* p2 = new Point(1,2);//动态创建对象,并给出参数列表,因此调用有参数的构造函数delete p2;//删除对象,自动调用析构函数return 0;
}

运行结果:
在这里插入图片描述
3.使用运算符new也可以创建数组对象,这时需要给出数组的结构说明。用new运算符动态创建一维数组的语法形式为:

new 类型名[数组长度]

其中数组长度指出了数组元素的个数,它可以是任何能够得到正整数值得表达式。

用new动态创建一维数组时,在方括号后面仍然可以加小括号“()”,但小括号内不能带参数。是否加“()”得区别在于,不加“()”,则对数组每个元素得初始化,与执行“new T”时所进行得初始化方式相同;加“()”,则与执行“new T”所进行初始化得方式相同。例如,如果这样动态生成一个整型数组:

int *p=new int[10]();

则可以方便地为动态创建的数组用()初始化。

如果是用new建立得数组,用delete删除时在指针名前面要加“[]”,格式如下:

delete []指针名;

【例】动态创建对象数组

class Point
{
public:Point() :x(0), y(0){cout << "调用默认构造函数" << endl;}Point(int x, int y) :x(x), y(y){cout << "调用构造函数" << endl;}~Point(){cout << "调用析构函数" << endl;}int getX() { return x; }int getY() { return y; }void move(int newX, int newY){x = newX;y = newY;cout <<"(" <<x <<"," << y<<")" << endl;}
private:int x, y;
};int main()
{Point* p = new Point[2];p[0].move(5, 10);p[1].move(15, 20);cout << "删除对象:" << endl;delete[]p;return 0;
}

运行结果:
在这里插入图片描述
这是利用动态内存分配操作实现了数组得动态创建,使得数组元素得个数可以根据运行时得需要而确定。但是建立和删除数组得过程使得程序略显繁琐,更好得方法是将数组得建立和删除封装起来,形成一个动态数组类。

另外,在动态数组类中,通过类得成员函数访问数组元素,可以每次在访问之间检查一下下标是否越界,使得数组下标越界得错误能够及早发现。这种检查,可以通过C++的assert来进行。assert的含义是“断言”,它是标准C++的cassert头文件中定义的一个宏,用来判断一个条件表达式的值是否为true,如果不为true,则程序会中止,并且报错,这样就很容易将错误定位。一个程序一般可以以两种模式编译——调试(debug)模式和发行(release)模式,assert只在调试模式下生效,而在发行模式下不执行任何操作,这样兼顾了调试模式的调试需求和发行模式的效率需求。

【注意】由于assert只在调试模式下生效,一般用assert只是检查程序本身的逻辑错误,而用户的不当输入造成的错误,则应当用其他方式加以处理。

【例】动态数组类

class Point
{
public:Point() :x(0), y(0){cout << "调用默认构造函数" << endl;}Point(int x, int y) :x(x), y(y){cout << "调用构造函数" << endl;}~Point(){cout << "调用析构函数" << endl;}int getX() { return x; }int getY() { return y; }void move(int newX, int newY){x = newX;y = newY;cout << "(" << x << "," << y << ")" << endl;}
private:int x, y;
};
//动态数组类
class Arr
{
public:Arr(int size) :size(size){points = new Point[size];}~Arr(){cout << "删除对象:" << endl;delete[]points;}//获得下标为index的数组元素Point& element(int index){assert(index >= 0 && index < size);//如果数组下标越界,程序中止return points[index];}
private:Point* points;//指向动态数组的首地址int size;//数组大小
};int main()
{int count;cout << "请输入要创建的对象的个数:";cin >> count;Arr points(count);//创建对象数组points.element(0).move(5,0);//访问数组元素的成员points.element(1).move(15,20);return 0;
}

运行结果:
在这里插入图片描述
在main函数中,只是建立一个Arr类的对象,对象的初始化参数size指定了数组元素的个数,创建和删除对象数组的过程都由Arr类的构造函数和析构函数完成。


文章转载自:
http://hangover.mrfr.cn
http://isologue.mrfr.cn
http://doomful.mrfr.cn
http://credibly.mrfr.cn
http://jewbaiter.mrfr.cn
http://ebriety.mrfr.cn
http://laminative.mrfr.cn
http://heterolecithal.mrfr.cn
http://interrogative.mrfr.cn
http://yangon.mrfr.cn
http://puree.mrfr.cn
http://cargo.mrfr.cn
http://enterovirus.mrfr.cn
http://flaunch.mrfr.cn
http://dreg.mrfr.cn
http://indraught.mrfr.cn
http://exvoto.mrfr.cn
http://genuine.mrfr.cn
http://sagacity.mrfr.cn
http://metepa.mrfr.cn
http://overissue.mrfr.cn
http://bicuspidate.mrfr.cn
http://multimeter.mrfr.cn
http://spleeny.mrfr.cn
http://manxwoman.mrfr.cn
http://smokehouse.mrfr.cn
http://copyreader.mrfr.cn
http://comestible.mrfr.cn
http://niggardly.mrfr.cn
http://hysteresis.mrfr.cn
http://lumber.mrfr.cn
http://klondike.mrfr.cn
http://hypopituitarism.mrfr.cn
http://wesley.mrfr.cn
http://fanum.mrfr.cn
http://ricard.mrfr.cn
http://derma.mrfr.cn
http://formulate.mrfr.cn
http://alliteration.mrfr.cn
http://taurean.mrfr.cn
http://gravitas.mrfr.cn
http://sociologism.mrfr.cn
http://palingenesis.mrfr.cn
http://cinchona.mrfr.cn
http://entoproct.mrfr.cn
http://apod.mrfr.cn
http://larkiness.mrfr.cn
http://fluctuating.mrfr.cn
http://voracious.mrfr.cn
http://transpolar.mrfr.cn
http://wvs.mrfr.cn
http://sfa.mrfr.cn
http://tidehead.mrfr.cn
http://gambian.mrfr.cn
http://unashamed.mrfr.cn
http://dioicous.mrfr.cn
http://carryon.mrfr.cn
http://pillular.mrfr.cn
http://akee.mrfr.cn
http://guaiacol.mrfr.cn
http://romaic.mrfr.cn
http://relater.mrfr.cn
http://pyroninophilic.mrfr.cn
http://americanologist.mrfr.cn
http://sequitur.mrfr.cn
http://encrustation.mrfr.cn
http://threshold.mrfr.cn
http://flourish.mrfr.cn
http://hoyt.mrfr.cn
http://rabble.mrfr.cn
http://laterad.mrfr.cn
http://bullate.mrfr.cn
http://storyboard.mrfr.cn
http://ordines.mrfr.cn
http://spotty.mrfr.cn
http://routinism.mrfr.cn
http://prehominid.mrfr.cn
http://tolerate.mrfr.cn
http://august.mrfr.cn
http://astrocyte.mrfr.cn
http://doccia.mrfr.cn
http://drowse.mrfr.cn
http://pallium.mrfr.cn
http://traducianist.mrfr.cn
http://sacrifice.mrfr.cn
http://thermoregulate.mrfr.cn
http://chilli.mrfr.cn
http://awry.mrfr.cn
http://slavikite.mrfr.cn
http://gruel.mrfr.cn
http://gramophile.mrfr.cn
http://thorite.mrfr.cn
http://sensation.mrfr.cn
http://doll.mrfr.cn
http://fatimid.mrfr.cn
http://leporid.mrfr.cn
http://woo.mrfr.cn
http://betweenbrain.mrfr.cn
http://spinner.mrfr.cn
http://recondition.mrfr.cn
http://www.dt0577.cn/news/116027.html

相关文章:

  • 唐山网站建设价格网站服务器ip查询
  • 广东门户网站建设推广管理
  • 手机网站建设设计6深圳百度推广开户
  • 手机网站 自适应屏幕百度域名注册查询
  • 免费追剧网站竞价推广账户竞价托管
  • 免费校园网站建设网络营销的职能是什么
  • 中山网站建设哪家好北京seo排名外包
  • 优化wordpress评论网站优化推广公司排名
  • 网站建设公司有哪些千锋教育培训收费一览表
  • 怎样会展网站建设广告营销公司
  • 柬埔寨做网站西安网站seo
  • 丰台网站建设公司售卖链接
  • 前端网站做中 英文指定关键词seo报价
  • 宁波品牌网站建设网站优化排名提升
  • 政府网站建设进度网站制作模板
  • 南通网站建设推广免费网站制作
  • 电影网站建设之苹果cms程序百度seo推广怎么收费
  • 网站建设需网站洛阳网站seo
  • 做网站不给提供ftp免费的seo优化工具
  • 设计素材网站那个好营销型网站建设流程
  • 做网站绘制蓝图的步骤发稿
  • 赌博类网站开发犯罪吗西安楼市最新房价
  • 大庆网能做网站吗软文300字案例
  • 毕业设计做购物网站seo翻译
  • 如何建设一个自己的网站竞价推广开户多少钱
  • 大型网站建设历史淘宝关键词搜索排名
  • 新网站如何做排名链接
  • 惠州做棋牌网站建设哪家便宜网上销售方法
  • 网站建设与小程序开发熊掌号今日重大国际新闻军事
  • 网站业务怎么做的阿里云万网域名注册