关于new 和 delete

[复制链接]
 楼主| hsbjb 发表于 2012-6-7 17:19 | 显示全部楼层 |阅读模式
以字符串处理函数为例,不调用string库里的函数,编写一个c++程序来实现字符串处理函数strlen的功能,代码如下:
//strlen
//

#include
<iostream>
using
namespace std;
class istrlen{
      
public:
            
int number;
            
char a[10];
            
char
*p;
             istrlen(
int initial);
            
int count();
            
void f1();
};
            
istrlen::istrlen(
int initial){
                   number
=initial;
                   cin
>>a;
                   p
=a;
}
int istrlen::count(){
   
while(*p!='\0'){
                number
++;
                p
++;
                }
   
return number;
}


void istrlen::f1(){
    cout
<<number<<endl;
}

int main(){
    istrlen A(
0);  
    A.count();
    A.f1();
    system(
"pause");//DEVC++ make the result clear to see
}

写出代码后就会出现一个问题了,如果我所输入的字符串长度大于我预先定义的呢?
编译可知,编译器是不会报错,但是输出的结果不是你所输入字符串的长度
这时候我就想着用动态内存分配的方法来解决此问题
使用operator new 和 delete 如何实现呢?
baidudz 发表于 2012-6-7 20:30 | 显示全部楼层
为什么要去重载new和delete??这个只需要去管理好你的指针所开辟的内存大小而已,没有必要重载new和delete
无冕之王 发表于 2012-6-7 21:13 | 显示全部楼层
cin>>a
如果没有分配足够大,这里直接就错误退出了
你可以试试
char a[10]
cin>>a 然后输入超过11字符试试。
txcy 发表于 2012-6-8 16:29 | 显示全部楼层
没有必要重载new和delete
gxgclg 发表于 2012-6-8 16:43 | 显示全部楼层
LZ再仔细看看C++ Primer这本书
您需要登录后才可以回帖 登录 | 注册

本版积分规则

193

主题

2354

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部