#include <iostream>
#include <cstring>
using namespace std;
class String{
public:
String(const char* p = NULL){
m_str = new char[strlen(p?p:"") + 1];
strcpy(m_str,p?p:"");
}
String(const String& that){
m_str = new char[strlen(that.m_str) + 1];
strcpy(m_str,that.m_str);
}
String& operator=(const String& that){
if(&that != this){
String temp(that);
swap(temp.m_str,m_str);
}
return *this;
}
~String(){
if(m_str){
delete [] m_str;
m_str = NULL;
}
}
const char* c_str() const{
return m_str;
}
private:
char* m_str;
};
int main()
{
String str("1234");
cout << str.c_str() << endl;
}
#include <cstring>
using namespace std;
class String{
public:
String(const char* p = NULL){
m_str = new char[strlen(p?p:"") + 1];
strcpy(m_str,p?p:"");
}
String(const String& that){
m_str = new char[strlen(that.m_str) + 1];
strcpy(m_str,that.m_str);
}
String& operator=(const String& that){
if(&that != this){
String temp(that);
swap(temp.m_str,m_str);
}
return *this;
}
~String(){
if(m_str){
delete [] m_str;
m_str = NULL;
}
}
const char* c_str() const{
return m_str;
}
private:
char* m_str;
};
int main()
{
String str("1234");
cout << str.c_str() << endl;
}