[备考练习]C++对象和对象指针

来源:互联网 发布:scara机械手编程手册 编辑:程序博客网 时间:2024/05/22 09:02
#include <stdio.h>#include <stdlib.h>class apple  {private:      char* pName; //类里面含有指针 public:      apple()    {         printf("helloworld!\n");        pName = NULL;        pName = (char* )malloc(100*sizeof(char));    }      ~apple()     {        if(NULL != pName)         {            printf("helloworld!2\n");            free(pName);            pName = NULL;//即使赋值为NULL,也不能阻止出现被释放两次        }    }  };    void process(apple* b)  {      apple* a;     a = b;     printf("abOK!\n");    apple *c,d;//只有一个实例,且申明一个对象指针,指针没有调用构造函数和析构函数,而实例类变变量则会调用析构函数    *c = d;    printf("cdOK!\n");    apple *e,*f;    e = f; //将e的地址覆盖为f的地址,不是实体变量,没事    printf("efOK!\n");    //apple *g, *h;    //*g = *h;//意图引用空指针,段错误        //printf("i,k Now!\n");    //apple i, j;    //i = j;  //用实体j初始化i, 使用了浅复制,导致 i分配给pName地址丢失了,无法重新释放回收    apple k;    k = *b;      //用valrind检测存在内存泄露!!!    printf("kOK!\n");}int main(){    apple b;    process(&b);    return 0;}
                                             
0 0