Code: Selecteer alles
Str Str::operator +(const char*& s) const{
Str res = Str(_str);
return res.append(s);
}
Code: Selecteer alles
const Str Str::operator +(const char*& s) const{
Str res = Str(_str);
return res.append(s);
}
Code: Selecteer alles
Str Str::operator +(const char*& s) const{
Str res = Str(_str);
return res.append(s);
}
Code: Selecteer alles
const Str Str::operator +(const char*& s) const{
Str res = Str(_str);
return res.append(s);
}
Dat je in het tweede geval de gereturnde Str niet mag veranderen.Wat is het verschil?
Code: Selecteer alles
class Str{
private:
char* _str; //pointer to the string
unsigned long int _length;
public:
Str();
Str(char*);
Str(const Str&);
~Str(void);
Str append(const Str&);
Str append(const char*);
char getCharAt(const unsigned long int )const;
unsigned long int length(void)const;
Str substring(const unsigned long int , const unsigned long int )const;
char* toCharString()const;
Str operator +(const Str&) const;
Str operator +(const char*&) const;
Str& operator =(const Str&);
friend ostream& operator <<(ostream& outputStream, const Str&);
};
Hoe roep je die precies aan? Vanwaar die extra reference, bedoel je niet gewoon operator + (const char*) ?317070 schreef:Een andere vraag:
Hierin gaat hij bij mij nooit operator +(const char*&) gebruiiken, maar maakt hij er steeds een operator +(const Str&) en Str(char*) van?
Heeft er daar iemand een verklaring voor? Of is dit gewoon iets vreemd van de compiler?
Code: Selecteer alles
int main(void){
Str b = Str("b");
b = b+"a";
}