注册 登录
编程论坛 C++教室

=号重载问题

绝对菜鸟哦 发布于 2010-06-18 22:14, 603 次点击
#include"iostream.h"
#include<string.h>
class String
{
public:
 String(char *p1)
{
  p=new char[strlen(p1)+1];
  strcpy(p,p1);
}
 ~String()
 {delete p;}
 void operator=(String obx)
{
 strcpy(p,obx.p);
 

}
 char show()
 {cout<<p; return 0;}
private:
 char *p;
};
void main()
{
 String ob1("abc");
 String ob2("def");
 ob1=ob2;
 cout<<ob1.show();

}

7 回复
#2
绝对菜鸟哦2010-06-18 22:14
运行时出错,编译连接没问题。。。  求高手从根本上告诉我原因。
#3
绝对菜鸟哦2010-06-18 22:27
对了 忘了说明是字符串拷贝的功能
#4
冰点小爱2010-06-18 22:46
程序代码:
#include"iostream.h"
#include<string.h>
class String
{
public:
    String(char *p1)
    {
  p=new char[strlen((p1)+1)];//这里多加一对括号
  strcpy(p,p1);
    }
    /*~String()
    {
        delete p;
    }
*/
    void operator=(String obx)
    {
    strcpy(p,obx.p);


    }
    char show()
    {
        cout<<p;
        return 0;
    }
    private:
        char *p;
    };
void main()
    {
        String ob1("abc");
        String ob2("def");
        ob1=ob2;
        cout<<ob1.show();

    }
那个析构函数我也不知道怎么用,你那个还没有调用就已经释放了,内存里已经没有东西了。所以运行出错。我现在就这水平了,等待高人指教吧
#5
南国利剑2010-06-18 22:48
回复 3楼 绝对菜鸟哦
什么功能?
说清楚。
#6
绝对菜鸟哦2010-06-18 22:53
=号重载  字符串拷贝的功能
#7
绝对菜鸟哦2010-06-18 23:09
我终于知道了!!!!!! 老师回我邮件了。。。 谢谢关注。。。
#8
zgxyz20082010-06-19 16:31
如果你没有用new来自我开辟类的话,如果调用了析构函数,那么在过程执行完毕的时候系统会再次自动调用析构函数,但是这个类的内存已经被你释放掉了,这时候就会发生内存错误,所以一般情况下,不用自己使用析构函数,只有用new运算符动态定义类的时候才要自主释放。把你的析构函数注释掉就OK...
1