关于析构函数 [问题点数:40分,结帖人Yaoxin_]

Bbs2
本版专家分:344
结帖率 100%
Bbs1
本版专家分:0
Bbs3
本版专家分:666
Bbs3
本版专家分:567
Bbs4
本版专家分:1832
Bbs1
本版专家分:10
Bbs4
本版专家分:1530
Bbs4
本版专家分:1530
Bbs2
本版专家分:344
Bbs2
本版专家分:323
Bbs7
本版专家分:15547
Blank
黄花 2014年11月 C/C++大版内专家分月排行榜第二
2014年10月 C/C++大版内专家分月排行榜第二
2014年8月 C/C++大版内专家分月排行榜第二
Bbs8
本版专家分:31772
Blank
黄花 2014年4月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2016年2月 C/C++大版内专家分月排行榜第三
2016年1月 C/C++大版内专家分月排行榜第三
Bbs8
本版专家分:33509
Blank
黄花 2014年7月 C/C++大版内专家分月排行榜第二
2014年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2014年10月 C/C++大版内专家分月排行榜第三
2014年4月 C/C++大版内专家分月排行榜第三
Bbs2
本版专家分:268
Bbs8
本版专家分:33509
Blank
黄花 2014年7月 C/C++大版内专家分月排行榜第二
2014年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2014年10月 C/C++大版内专家分月排行榜第三
2014年4月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:61
Bbs2
本版专家分:117
Bbs2
本版专家分:344
Bbs2
本版专家分:344
Bbs2
本版专家分:344
Bbs2
本版专家分:268
Bbs8
本版专家分:33509
Blank
黄花 2014年7月 C/C++大版内专家分月排行榜第二
2014年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2014年10月 C/C++大版内专家分月排行榜第三
2014年4月 C/C++大版内专家分月排行榜第三
Bbs1
本版专家分:5
Bbs8
本版专家分:31772
Blank
黄花 2014年4月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2016年2月 C/C++大版内专家分月排行榜第三
2016年1月 C/C++大版内专家分月排行榜第三
Bbs2
本版专家分:323
c# 关于析构函数
class testrn rn ~c()rn rn Console.WriteLine("已执行<em>析构函数</em>");rn rn rnrnrnclass Programrn rn static void Main(string[] args)rn rn while (true)rn rn test a = new c();rn rn rn rnrnrn--------------------------------------------------------rnrn<em>析构函数</em>不能被程序员调用,那写<em>析构函数</em>有什么用途?rnrn上面这个程序运行的时候,内存不会增加太快;rn但是按了pausebreak之后,使用的内存就增加很快。rn为什么?
关于析构函数的反思??????????
例题:定义一个tree类,有成员ages,成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。rn解:rn #include rn using namespace std;rnclass Tree rnint ages;rnpublic:rnTree(int n=0);rn~Tree();rnvoid grow(int years);rnvoid age();rn;rnrnTree::Tree(int n) rnages = n;rnrnrnTree::~Tree() rnage();rnrnrnvoid Tree::grow(int years) rnages += years;rnrnrnvoid Tree::age() rncout << "这棵树的年龄为" << ages << endl;rnrnrnvoid main()rnrnTree t(12);rnrnt.age();rnt.grow(4);rnrn程序运行输出:rn这棵树的年龄为12rn这棵树的年龄为16rnrnrn弄不明白的是这个<em>析构函数</em>rnTree::~Tree() rnage();rnrn中的age()是怎么被t.grow(4)调用的,怎么起桥梁作用的?rn
关于析构函数的调用问题:
书上说<em>析构函数</em>可以在下列两种情况被调用:rn1。如果一个对象被定义在一个函数体内,则当这个函数结束时,则当这个函数结束时,该对象的<em>析构函数</em>就被自动调用rn2。当一个对象使用new运算符被动态创建的,在使用delete运算符释放它时,delete将会自动调用<em>析构函数</em>。rn一道例题:rn#include rn#include "tdate1.h"rnvoid main()rnrn TDate1 today(1998,4,9),tomorrow(1998,4,10);rn cout<<<<<
关于构造函数和析构函数的若干问题????????
class Daternint d, m, y;rn static Date default_date; /*我认为有递归定义的嫌疑?rn public:rn Date(int dd=0,int mm=0,int yy=0);rnrn //........rnrn static void set_default(int,int,int);rnrn;rnrn构造函数rnrnDate::Date(int dd,int mm,int yy)rnrnd=dd?dd:defaule_date.d; /*既然是静态变量没有初试化?rnrnm=mm?mm:default_date.m;rnrny=yy ? yy:default_date.y;rnrnrnrnDate Date::default_date(16,12,1770); /*那default_date到底是函数还rn /*是变量呢?rnrnvoid Date::set_default(int d,int m,int y)rnrnDate::default_date=Date(d,m,y);rnrn /*这几句的调用我不太明白。rnrn---------------------------------------------------------------------------------rnrn物理的和逻辑的常量性:rnrn一个成员函数逻辑上是const,但它却仍然需要改变某个成员的值。对用户而言这个函数看似没改变其对象的状态,然而,却可能更新了某些用户不能直接访问的细节,这通常称为逻辑的常量性。rnrn此段落的意思不太理解,请您解释.......rnrn--------------------------------------------------------------------------rnrn具体类型rnrnclass Date_and_timernrnprivate:rnrn Date d;rnrn Time t;rnrnpublic:rnrn Date_and_time(Date d,Time t);rnrn Date_and_time(int d,Date::Month m,int y,Time t); rn /*在Date_and_time类中能直接rn /* 用 Date 类的成员变量和函数吗? rnrn//.....rnrn;rnrn------------------------------------------------------------------rnrn <em>析构函数</em>rnrn<em>析构函数</em>最常见的用途是释放构造函数请求的空间,以保证资源的回收。rnrn那假设:rnrn当类的成员函数中的定义有申请资源,但在程序中不一定用到次成员函数,那能否在<em>析构函数</em>中释放呢,因成员函数申请资源不象构造函数在生成对象时调用。而成员函数在此对象调用,此成员函数有不确定性(可能有调用也可能不调用),那用<em>析构函数</em>的如何形式来保证资源的回收呢?
关于构造与析构函数
//为什么这个程序会有三个constructor而却有四个rn//delete, 然后用return Complex(a+d.a,b+d.b);rn//为什么都是只有三个?thxrnrn#includernusing namespace std;rnrnclass Complexrnrnrn int a;rn double b;rnpublic:rn Complex(int a = 0,int b = 0)rn rn this->a = a;rn this->b = b;rn cout<<<<
关于析构函数的疑惑~
程序如下:rn#include rn#include rnrnclass B rnrn public:rn B(char *s,double n)rn rn strcpy(name,s);rn b=n;rn cout<<<<
关于构造函数和析构函数
class CPointrnrnpublic:rn CPoint();rn CPoint(CPoint&);rn ~CPoint();rn rn int GetX();rn void SetX(int);rn int GetY();rn void SetY(int);rn void showPoint();//显示点rnrn这个拷贝构造函数怎么写?<em>析构函数</em>怎么写?小弟新手,求大侠帮忙!
关于析构函数的疑问
class Arn virtual void Test(int&)const=0;rn;rnclass B:public Arnprotected:rn B(const int &a,const int &b):lhs(a),rhs(b)rn int lhs,rhs;rn ~B()cout<<
关于C++析构函数的问题
如果是释放类对象还没有关闭程序应该会执行它的<em>析构函数</em>的,但若是我用了exit(0);或者直接X掉程序,程序在关闭前会调用 所有 类对象的<em>析构函数</em>吗?
关于析构函数的调用时间问题
stringbad headline2("letture prey"); stringbad是我自定义的一个类rncallme2(headline2);rnvoid callme2(stringbad sb);这是callme2的函数原型rn我想问一下在调用完callme2(headline2);后,<em>析构函数</em>会不会被调用释放掉headline2的空间。rn以下是类的析构和构造函数,还有类定义rn#includernclass stringbadrnrnprivate:rn char * str;rn int len;rn static int num_strings;rnpublic:rn stringbad(const char * s);rn stringbad();rn ~stringbad();rn friend std::ostream & operator<<
关于析构函数的,求教
经过跟踪发现,在主函数调用print函数时,对象发生了析构,若选择继续,就会因为对象被释放了报错。rn为什么会析构呢,怎么才能让它不析构,就算析构也因该是析构传参产生的副本才是啊rn#includern#includernusing namespace std;rnenum error_codeoverflow,underflow,success;rntypedef unsigned elementtype,BOYNUM,GIRLNUM,AMOUNT,SONGNUM,BOYNUMBER,GIRLNUMBER,SONGNUMBER;rnstruct nodernrn unsigned data;rn node * next;rn;rn//typedef struct node *pnode; //这句的作用在于可以用pnode 声明一个结构体指针而不需要带“*”号,使用起来更加方便,因代码简单,故没有使用rnrnclass queuernrnpublic:rn queue(); //初始化rn bool empty()const; //判断空rn unsigned size(); //求长度rn error_code append(const elementtype x) ; //入队 rn error_code serve(elementtype &x) ; //出队 rn void create(unsigned n) ; //快速生成队列 rn ~queue(); //释放队列rnprivate:rn unsigned count;rn node *front,*rear;rn;rn//初始化rnqueue::queue()rnrn front=new node;rn rear=front;rn front->next=NULL;rn count=0;rnrn//判断空rnbool queue::empty()constrnrn return front==rear;rnrn//求长rnunsigned queue::size()rnrn return count;rnrn//入队rnerror_code queue::append(const elementtype x) rnrn node *s=new node;rn s->data=x;rn s->next=NULL;rn rear->next=s;rn rear=s;rn count++;rn return success;rn rn//出队rnerror_code queue::serve(elementtype &x) rnrn node*u;rn if(empty())return underflow;rn x=front->next->data;rn u=front->next;rn front->next=u->next;rn delete u;rn count--;rn if(front->next==NULL)rear=front;rn return success;rnrn//快速生成队列rnvoid queue::create(unsigned n) rnrn for(unsigned i=1;idata=i;rn rear->next=s;rn rear=s;rn rear->next=NULL;rn count++;rn rnrn//释放队列rnqueue::~queue() rn rn unsigned y;rn while(!empty())serve(y);rn delete front;rnrnrn//延迟函数rnunsigned sleep( clock_t wait ) rn rn clock_t goal; rn goal = wait + clock(); rn while( goal > clock() ) ;rn return 0; rnrn//最大公约数rnunsigned gcd(unsigned a, unsigned b)rnrn if (a < b) swap(a, b);rn if (b == 0)return a;rn else return gcd(b, a%b);rnrn//判断同余rnbool judge(unsigned a,unsigned b,unsigned c)rnrn if(a%c==b%c)return 1;rn else return 0;rnrn//查询能否在一起跳舞,若能输出前m曲rnvoid demand(BOYNUM b1,GIRLNUM g1,queue boy,queue girl)rnrn unsigned m;rn BOYNUM b2;rn GIRLNUM g2;rn unsigned e=gcd(boy.size(),girl.size());rn if(judge(b1,g1,e))rn rn cout<>m;rn cout<<>s;rn for(unsigned n=1;n<<<>s;rn for(unsigned n=1;n<<<>b>>g;rn boy.create(b);rn girl.create(g);rn int x;rn bool y=true;rn while(y)rn rn cout<<>x;rn switch(x)rn rn case 1:rn rn bool d=true;rn while(d)rn rn cout<<>b1>>g1;rn if (b1>b&&g1<<<>b1>>g1;rn if (b1>b&&g1<<<>y;rn rn cout<<>z;rn rn return 0;rnrn另外,若我使用标准模板库,不发生这个问题……
关于构造和析构函数的问题
#include rn#include rnusing namespace std;rnrnstatic int i=0;rnclass Brnpublic:rn rn B()p=new int;cout<<<
关于析构函数的一个小问题……
[code=C/C++][/code]class Apple rn int i; rnpublic: rn Apple(int n):i(n) rn ~Apple() rn cout << "Apple No." << i << " destructed" << endl; rn rn;rnrn<em>析构函数</em>不带任何参数,他是如何将参数传递给变量i的
关于构造函数与析构函数
各位老大,我有个问题有点模糊,构造函数和<em>析构函数</em>,是配合使用的,但我看到一些程序中有构造函数也有<em>析构函数</em>,但一些程序中却只有构造函数,没有<em>析构函数</em>。我不知道rn什么时候可以省略<em>析构函数</em>,什么时间不能省略<em>析构函数</em>。省略的原因的什么,不能省的原因又为何??
(菜鸟提问)关于析构函数
class Arnvoid main()rnrn A *a = new a();rn delete a;rn delete a;//运行有错rnrnrn是在析构的时候发生的.rn请问是不是在<em>析构函数</em>中进行处理就能不出错?rn如果是,该如何处理?rn如果不是,那么为什么呢?
一个关于析构函数的疑问
本人写了如下一个类rn#includernclass Matrixrnrnprivate:rn int m_cols;rn int m_rows;rn double** m_data;rnpublic:rn Matrix(int rows,int cols);rn Matrix();rn Matrix( Matrix& objMatrix );rn virtual ~Matrix();rn void SetVal(int rows,int cols,double val);rn double GetVal(int rows,int cols);rn int GetRow()return m_rows;;rn int GetCol()return m_cols;;rn Matrix operator*(Matrix& right);rn Matrix operator+(Matrix& right);rn Matrix operator-(Matrix& right);rn Matrix operator-();rn Matrix Transpose();rn Matrix AthwartMatrix();rn;rnrnMatrix::Matrix(int rows=1,int cols=1)rnrn assert(rows>0 && cols>0);rn m_cols=cols;rn m_rows=rows;rn m_data=new double*[m_rows];rn for(int i=0;i0 && rows0 && cols0 && rows0 && cols<=m_cols;cols++)rn rn valTemp=GetVal(rows,cols);rn objMatrix.SetVal(cols,rows,valTemp);rn rn return objMatrix;rnrnrn在开始时的<em>析构函数</em>如注释中实现,但是发现在vc中运行时,虽然通过编译,但是在到了调用这个类的地方确弹出了系统对话框,出错,然而我把<em>析构函数</em>的内容注释掉后,程序就正常运行,但是结果当然是导致大量的内存泄漏,本人十分不解,到底应该怎样实现<em>析构函数</em>才能使程序正常,请高手指教
关于析构函数,请教一下
#include rnclass MIPEnvrnrnpublic:rn MIPEnv();rn void end();rn ~MIPEnv(); rn;rnrnvoid MIPEnv::end()rnrn ~MIPEnv();rnrn编译出错:error C2675: unary '~' : 'class MIPEnv' does not define this operator or a conversion to a type acceptable to the predefined operatorrn请问,这是怎么回事啊?rn
关于对话框的析构函数
我写了个对话框程序,想在程序结束的时候释放一些申请的内存.我写了对话框的<em>析构函数</em>,可是发现没有没调用.请大家指点rn程序如下rnpublic:rn CIVRConfigDlg(CWnd* pParent = NULL); // standard constructorrn ~CIVRConfigDlg();//这样写对吗?我加了VIRTUAL也不行呀
一个关于析构函数的问题!
我用C++在PRIVATE中定义一个二级指针如:int **p可是,当我在<em>析构函数</em>中用delete p来回收堆时,总报告指针出错,是怎么回事?那位大虾明示?有分!
关于virtual 析构函数的问题
在一些程序中看到有virtual ~className(),我的印象中<em>析构函数</em>没有返回值和其他的,rn是不是在抽象类中可以这样写?
关于一个析构函数的问题
大家好,请问下面的程序,为什么会出现两个<em>析构函数</em>,第一个析构是如何产生的,谢谢!rnrn环境vc6,rnrn#include rnusing namespace std;rnrnclass Arnrnpublic:rn A()cout<<
关于构造析构函数的问题
class Managerrnrnpublic:rnrn Manager();rnrn virtual ~Manager();rnrn ManagerWnd ();rnrn virtual ~ManagerWnd ();rnrn为什么有两组构造<em>析构函数</em>,有什么用?
关于构造函数和析构函数的问题
以下程序为什么是输出rnconstructing Randyrncopy constructing rnaarnDestructingrnaarnDestructingrnaarnrn#include "stdafx.h"rn#includernusing namespace std;rnrnclass Personrnrn char *pName;rnrnpublic:rnrn Person(char *pN="noName")rn rn cout<<
关于析构函数的一些
1.<em>析构函数</em>,比构造函数多一个~和构造函数一样,没有返回值 2.<em>析构函数</em>总是无参的,不能重载 3.语法上允许多次调用<em>析构函数</em>,且什么时候释放什么时候调用<em>析构函数</em> 4.在用类类型开辟内存空间时,Malloc free 不会调用<em>析构函数</em>,而new delete 会调用 例子如下 在这里插入代码片 ...
关于构造函数和析构函数的若干问题???????????
class Daternint d, m, y;rn static Date default_date; /*我认为有递归定义的嫌疑?rn public:rn Date(int dd=0,int mm=0,int yy=0);rnrn //........rnrn static void set_default(int,int,int);rnrn;rnrn构造函数rnrnDate::Date(int dd,int mm,int yy)rnrnd=dd?dd:defaule_date.d; /*既然是静态变量没有初试化?rnrnm=mm?mm:default_date.m;rnrny=yy ? yy:default_date.y;rnrnrnrnDate Date::default_date(16,12,1770); /*那default_date到底是函数还rn /*是变量呢?rnrnvoid Date::set_default(int d,int m,int y)rnrnDate::default_date=Date(d,m,y);rnrn /*这几句的调用我不太明白。rnrn---------------------------------------------------------------------------------rnrn物理的和逻辑的常量性:rnrn一个成员函数逻辑上是const,但它却仍然需要改变某个成员的值。对用户而言这个函数看似没改变其对象的状态,然而,却可能更新了某些用户不能直接访问的细节,这通常称为逻辑的常量性。rnrn此段落的意思不太理解,请您解释.......rnrn--------------------------------------------------------------------------rnrn具体类型rnrnclass Date_and_timernrnprivate:rnrn Date d;rnrn Time t;rnrnpublic:rnrn Date_and_time(Date d,Time t);rnrn Date_and_time(int d,Date::Month m,int y,Time t); rn /*在Date_and_time类中能直接rn /* 用 Date 类的成员变量和函数吗? rnrn//.....rnrn;rnrn------------------------------------------------------------------rnrn <em>析构函数</em>rnrn<em>析构函数</em>最常见的用途是释放构造函数请求的空间,以保证资源的回收。rnrn那假设:rnrn当类的成员函数中的定义有申请资源,但在程序中不一定用到次成员函数,那能否在<em>析构函数</em>中释放呢,因成员函数申请资源不象构造函数在生成对象时调用。而成员函数在此对象调用,此成员函数有不确定性(可能有调用也可能不调用),那用<em>析构函数</em>的如何形式来保证资源的回收呢?rnrn rn
新手求助,关于析构函数
我自己写三个PHP文件rn//db_query.phprnheader("Content-Type:text/html;charset=utf-8");rnclass db_query rn //put your code herern private $host=' ';rn private $dbuser=' ';rn private $dbpsw=' ';rn private $dbname=' ';rn private $conn=null;rn function __destruct() rn $this->close();rn rn function connect() rn global $config;rn if($this->conn==null) rn $this->conn=mysql_connect($this->host, $this->dbuser, $this->dbpsw)rn or die("Could not connet to databse" . mysql_error());rn mysql_select_db($this->dbname)rn or die("Could not select databse" . mysql_error());rn mysql_query("set names".$config['charset']);rn rn rn function query($sql) rn if($this->conn==null) rn $this->connect();rn $result = mysql_query($sql);rn rn return $result;rn rn function close() rn if($this->conn) rn mysql_close($this->conn);rn $this->conn=null;rn rn rnrn?>rn//config.phprnrnrn//install.phprnrnquery($sql1);rn[color=#FF0000]$db_query=new db_query();[/color]rn$sql2="create table if not exists bbsusers (id int auto_increment, username varchar(15) character set utf8,password varchar(15) character set utf8,PRIMARY KEY (id) )";rn$db_query->query($sql2);rn?>rn我发现必须实例化两次 有没有办法不这么麻烦的?小弟是个新手,请问这几段代码有哪些可以优化的
【求解】关于析构函数
假如定义对象s1,s2,s3,主函数结束的时候调用<em>析构函数</em>的顺序是从s1开始还是从s3开始或者随机?
关于显式调用析构函数
在c++ primer一书中p->~T()的解释是适当地清除p所指向的对象本身,但并没有释放对象所占内存。rn但我在写简单的ertor类的时候,在pop_back中使用来释放对象没有效果。rnrntemplaternclass Vectorrnrn T *m_pArray;rn unsigned int m_nCapacity;rn unsigned int m_nSize;rn void pop_back()rn rn m_nSize--;rn (m_pArray + m_nSize)->~T();rn rnrn例:主函数中的一段简单代码rnVertor vecA;rnpush_back(1);rnpush_back(2);rnpush_back(3);rnpop_back();rnfor(int n = 0; n != vecA.size() + 1; n++) //这里我特意size + 1来输出多一个。rnrn cout << vecA[n] << '\t';rnrn输出的是1 2 3 rn??为什么这里的3还会输出,3不是被析构掉了,应该输出一个不确定的数吗??怎么还会输出一个3来rn请高手解释一下,
关于析构函数谢谢
在程序中,我用了Try块,假如说发生了异常,那么<em>析构函数</em>会执行吗?还有当发生异常时,程序还能继续执行吗?谢谢
关于默认的析构函数
注意:我说的是默认的<em>析构函数</em>rn它的作用是不是只能清除变量rn而要清除指向对象的指针,一定要自定义的<em>析构函数</em>?
关于派生类析构函数的问题
有两个类:rnclass Arnrnvirtual void termclass();rnprivaternvirtual ~B;rnrnrnvoid A::termclass()rnrnprintf("A is end");rnrnclass B:Arnrnvirtual void termclass();rnprivaternvirtual ~B;rnrnvoid B::termclass()rnrnprintf("B is end");rnrn由于B是A的派生类,所以B退出时除了调用自己的<em>析构函数</em>外,还要调用A的<em>析构函数</em>rn于是我再A的<em>析构函数</em>中加入rnthis->termclass()rn来试图在A或B的实例退出时实现多态,即是A的实例退出时调用A的termclass方法,B的实例退出时调用B的termclass方法.rn但是最后运行是,不管A还是B的实例退出时都是返回的“A is end”rn应该来说this是指向的当前的对象,通过虚汗数应该实现多态,但没有实现是什么原因拉?rn通过上述问题我主要是想实现让B的父类A的实例退出时能调某个函数释放某些资源,而当B退出时不作这项工作,望指点
关于模版类的构造、析构函数
.h:rntemplate rnclass FileConnectrnrn private:rn // 禁用复制,拷贝rn FileConnect& operator = (const FileConnect&);rn FileConnect(const FileConnect&);rn public:rn FileConncet();rn ~FileConnect();rnrnrn.cpp:rn template rn FileConnect :: FileConncet()rn rn rnrn template rn FileConnect :: ~FileConnect()rn rn rnrnclient:rn main()rn rn // E2247 'FileConnect::FileConnect(const FileConnect &)' rn // is not accessiblern // 编译错误,提示拷贝构造函数无法获取rn FileConnect fc; rn rnrn可是我没有调用拷贝构造函数rnrn问题2:rn 如果不禁用拷贝构造函数(去除 .h 文件中第7行),在编译期没有错误,但在build时会出现连接错误rn“ [Linker Error] Unresolved external 'FileConnect::~FileConnect()' referenced from D:\MY OWN PROGRAM\BCB\ACGIPMGR\LOLI\LOLI_MAIN.OBJ”rn 提示我没有实现<em>析构函数</em>,但是我已经在 .cpp文件中实现了rnrn问这两个问题的原因及解决方法,谢谢rn
关于析构函数,,delete。
刚学了<em>析构函数</em>,,写这程序的目的是为了体验一下它的作用。。rn class Arn rn private:rn int *p;rn int a,b,c;rn public:rn A(int,int,int);rn ~A();rn ;rn A::A(int d,int e,int f)rn rn a=d;rn p=new int;//--------------------------------------------rn b=e;rn c=f;rn cout<<
关于析构函数和作用域问题!
void f()rnrn Investment* ptr=CreateInvestment(); //Investment是一个类,函数CreateInvestment返回一个类Investment的对象rn delete ptr;rnrnrn我想说的是,既然ptr在局部作用域中,离开函数f()的作用域时,动态分配的内存会被系统回收,为什么rn还要用delete ptr???难道是自动回收不安全的原因吗?
求助, 关于析构函数, 构造函数的.
[code=C/C++]#include "stdafx.h"rn#include rn#include rn#include "Strings.h"rnrnint Strings::num_strings = 0;rnrnStrings::Strings()rnrn length = 1;rn str = new char[length];rn str[0] = '\0';rnrnrnStrings::Strings(const Strings &st)rnrn length = st.length;rn str = new char[length]; // waiting for confirmation of the end notation.rn std::strcpy(str, st.str);rn num_strings ++;rnrnrnStrings::Strings(const char *s)rnrn length = std::strlen(s);rn str = new char[length];rn std::strcpy(str, s);rn num_strings ++;rnrnrnStrings::~Strings()rnrn delete [] str;rn num_strings --;rnrnrnStrings Strings::operator+(const Strings &st)rnrn return std::strcat(str, st.str);rn[/code]rnrn这是小弟写的, 为什么在调用的时候删除总是抱错呢?rnnum_strings总是多一个rn[code=C/C++]rn Strings st1 = "11111111111";rn Strings st2("2222222222");rn Strings st3 = Strings("3333333333");[/code]rn如果这样, num_strings就是4了.rn请问是问什么呀, 我正在自学c++, 看到复制构造函数, 赋值运算符这里, 怎么做也做不对, 感觉还是没理解呀~rn树上说, 默认的构造函数和默认的赋值运算符都会值复制对象, 可以通过定义默认构造函数的方法解决, 我在上面的代码中已经按照书上的方法做了, 为什么还是没有解决?rn谢谢各位了, 分不多, 还望各位不吝赐教
关于析构函数的调用。
[code=C/C++]#include rn#include rnclass Stringrnrnpublic:rn String(const char *str = NULL); // 普通构造函数rn String(const String &other); // 拷贝构造函数rn ~String(void); // <em>析构函数</em>rn String & operator =(const String &other); // 赋值函数rn void output()rn rn cout<<>st1;rnrn String A(st1);rn A.output();rnrn// String B(A);rnrn// B.output();rn rn char st2[100]; rn cin>>st2;rn String B(st2);rn// B.output();rn (A=B).output();rn rnrn[/code]rn请问高手,调用<em>析构函数</em>怎么输出都是Destructed 2。这个程序是面试题,但是我改了一下,本来<em>析构函数</em>还是弄得清楚得,但是重载了=运算符,就搞不清楚了。rn
关于构造函数的析构函数
#includern#includernrnusing namespace std;rnclass Arnrnpublic:rn A()cout<<func();rn A &aaa = c;rn aaa.func();rnrn[img=https://img-bbs.csdn.net/upload/201806/06/1528289748_872081.png][/img]rnrn请问为什么<em>析构函数</em>的调用不是与构造函数相反?
关于构造函数与析构函数的作用?
<em>关于</em>构造函数与<em>析构函数</em>的作用?rn 构造函数最主要作用就是生成对象和初始化对象。还有没有其他作用?rn <em>析构函数</em>的作用与构造函数作用相反,但最主要作用是在对象要完成生命周期时完成清理性工作,还有没有其他作用?rn 构造函数与<em>析构函数</em>都没有返回值类型,系统自动调用。rn 普通变量在初始化之前内存的状态是什么?当然会说是随机值。 (vc编译系统并不是随机的rn 我上机的经验看到 int 类型的变量是 -858993460;rn float 类型的变量是-1.07374e+008,double 类型的变量是-9.2559631349317831e+061,char 类型的变量是-52 ’?)rn 然而具体的一个对象在初始化之前内存的状态是什么?当然也会说是随机值。构造函数最主要作用就是生成对象和初始化对象。rn如果我们没有写构造函数,那么系统会自动调用默认的构造函数,默认的构造函数对对象数据成员没有起初始化作用,没有修改数据成员的值,当然会有这样的问题:生成对象的那段内存又处于随机值?rn 构造函数最主要作用就是生成对象,如果没有构造函数连默认的构造函数都没有,又能不能生成对象?rn 构造函数生成对象和初始化对象,那就相当于申请一段内存区域并在区域用新值来覆盖旧值。既然那样,何必又用<em>析构函数</em>呢,那么自然会想到<em>析构函数</em>调用完成后那段内存又处于什么状态,我想不时随机的。那又是什么呢?rn 请各位大哥指点指点!!
关于析构函数?? 没看懂!
#include rn#include rn#include rnusing namespace std;rnrnstruct namernchar *contents;rnname (char *name);rn~name();rn;rnrnname::name(char *name)rnrn int len=strlen(name);rn contents=new char[len+1];rn strcpy(contents,name);rn rnrnrnname::~name()rnrn cout<<
c# 课程设计案例精编第二部分下载
内有很多个项目案例,适合初学者练手,说明请看第一部分,不是书,是源代码哦 相关下载链接:[url=//download.csdn.net/download/eiiohglkhong/2586428?utm_source=bbsseo]//download.csdn.net/download/eiiohglkhong/2586428?utm_source=bbsseo[/url]
JavaScript权威指南(第5版)中文版(下)下载
JavaScript权威指南(第5版)中文版(下) 相关下载链接:[url=//download.csdn.net/download/xiaoziguo1/4225663?utm_source=bbsseo]//download.csdn.net/download/xiaoziguo1/4225663?utm_source=bbsseo[/url]
诺基亚nth主题下载
诺基亚nth主题,挺好看的,真的。 相关下载链接:[url=//download.csdn.net/download/u013269225/6764293?utm_source=bbsseo]//download.csdn.net/download/u013269225/6764293?utm_source=bbsseo[/url]
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数
我们是很有底线的