C++ 试图计算my“的ASCII码和;“先生”;(字符串)类 #包括 #包括 使用名称空间std; 班长{ int lung;//lenght爵士 char*sirul;//指向第一个字符形式sir的指针 公众: sir(const char*);//构造函数,用于测试 ~sir();//析构函数 字符运算符[](int索引); int cod(); }; int sir::cod() { u先生=*这个; char*s=sirul; int i,总和,l=肺; 如果(肺=0) cout
代码中几乎没有问题: 1.首先: 您有一个不匹配的C++ 试图计算my“的ASCII码和;“先生”;(字符串)类 #包括 #包括 使用名称空间std; 班长{ int lung;//lenght爵士 char*sirul;//指向第一个字符形式sir的指针 公众: sir(const char*);//构造函数,用于测试 ~sir();//析构函数 字符运算符[](int索引); int cod(); }; int sir::cod() { u先生=*这个; char*s=sirul; int i,总和,l=肺; 如果(肺=0) cout,c++,string,class,sum,ascii,C++,String,Class,Sum,Ascii,代码中几乎没有问题: 1.首先: 您有一个不匹配的新[]/删除呼叫此处。将删除sirul替换为删除[]sirul 2.秒: 在sir::cod中,您实际上是通过执行以下操作来复制对象 #include <iostream> #include <string.h> using namespace std; class sir{ int lung; //sir lenght char* sirul; //pointer to the first charact
新[]
/删除
呼叫此处。将删除sirul
替换为删除[]sirul
2.秒:
在sir::cod
中,您实际上是通过执行以下操作来复制对象
#include <iostream>
#include <string.h>
using namespace std;
class sir{
int lung; //sir lenght
char* sirul; //pointer to the first character form sir
public:
sir(const char*);//constructor,for test
~sir();// destructor
char operator[](int index);
int cod();
};
int sir::cod()
{
sir u=*this;
char* s=sirul;
int i,sum,l=lung;
if (lung=0)
cout<<"ASCII code sum is 0";
else
{
for(i=0; i<l; i++)
{
sum=sum+int(s[i]);
}
}
return sum;
}
sir::sir(const char* siroriginal)
{
int lungime=strlen(siroriginal);//string length
lung = lungime+1;
sirul = new char[lung];
strcpy(sirul,siroriginal);
}
sir::~sir(){
delete sirul;
}
char sir::operator[](int index){
if(index<lung && index >=0)return sirul[index];//verificare minima, verific daca este in limite
return '\0';
}
int main(){
cout<<"--------------test for sir-----------------\n";
sir s("un sir meserias");
char c=s[1];
cout<<c<<"\n";
cout<<s.cod();
}
因为您根本没有使用u
,所以应该删除这一行。它是双自由的来源。在cod
函数的末尾,u
将被销毁,您的内部指针sirul
将被删除。但是由于您没有定义任何复制运算符,编译器将为您和y生成它您将在两个sir
实例之间共享一个指针。
当第二个实例被销毁时,sirul
再次被删除。导致错误
3.第三:
接下来,在cod
中,您忘记将sum
初始化为0。这就是为什么您会得到不好的结果
4.第四:
在
cod
中,您正在执行if(sum=0)
操作。您缺少此处的=
。尝试将调试器附加到正在运行的程序中,您将学到很多东西!:)我不太知道如何执行此操作…谢谢,现在它看起来是如何工作的“cod”:int sir::cod(){int I,sum=0;if(lung==0)cout
sir u=*this;