我在C ++中定义了类st,它就像C ++中提供的预定义字符串类一样;
并且它只能执行程序中所示的3个操作。
我重载了=
和+
运算符,并且重载=
运算符我正在将字符串文字复制到类的对象。
当我将它与类对象一起使用时,赋值运算符被重载,重载函数应该起作用。
但是旧=
运算符给出了错误:error: conversion from ‘const char [9]’ to non-scalar type ‘st’ requested
st s1="sfsefseg";
为什么重载赋值运算符工作?
#include<iostream>
using namespace std;
class st{
char *arr;
int size;
public:
st(){
arr=new char[0];
size=0;
}
void operator=(const char*);
friend st operator+(st&,st&);
void display();
};
void st::operator=(const char *ch){
int i;
for(i=0;ch[i]!='\0';i++)
size=i;
delete [] arr;
arr=new char[size];
for(i=0;i<size;i++){
arr[i]=ch[i];
}
display();
}
st operator+(st &t,st &s){
st temp;
temp.size=t.size+s.size;
temp.arr=new char[temp.size];
for(int i=0;i<t.size;i++){
temp.arr[i]=t.arr[i];
}
for(int i=0;i<s.size;i++){
temp.arr[i+t.size]=s.arr[i];
}
temp.display();
return temp;
}
void st::display(){
if(size==0)
cout<<"\nEmpty string";
else{
for(int i=0;i<size;i++)
cout<<arr[i]<<" ";
}
}
int main(){
st s1="sfsefseg";
st s2="FJHSFK";
st s3=s1+s2;
return 0;
}