Operators that cannot be overloaded in C++ are:
- The scope resolution operator (::)
- The member selector operator (. or .*)
- The ternary operator (?:)
- The sizeof operator
- The typeid operator
- The comma operator (,)
Here's an example program that demonstrates operator overloading to concatenate two strings:
#include <cstring>
using namespace std;
class String {
private:
char* str;
public:
String() {
str = new char[1];
*str = '\0';
}
String(const char* s) {
str = new char[strlen(s) + 1];
strcpy(str, s);
}
~String() {
delete[] str;
}
String operator+ (const String& s) {
String result;
delete[] result.str;
result.str = new char[strlen(str) + strlen(s.str) + 1];
strcpy(result.str, str);
strcat(result.str, s.str);
return result;
}
void display() {
cout << str << endl;
}
};
int main() {
String s1 = "Hello ";
String s2 = "World";
String s3 = s1 + s2;
s3.display();
return 0;
}
In the above program, we have defined a class String with a private data member str which is a pointer to character. We have overloaded the + operator to concatenate two String objects. In the operator+ function, we have created a new String object result and allocated memory for it. We then copy the first string to result, followed by concatenating the second string. Finally, we return the result object.
In the main() function, we create three String objects s1, s2, and s3. We initialize s1 and s2 with two strings, and then we concatenate them using the overloaded + operator to get s3. Finally, we display the contents of s3.
No comments:
Post a Comment
If you have any doubts, please let me know