C++:Class with pointer

//String class: class with pointers members
#ifndef __STRING__
#define __STRING__
class String
{
public: 
   String(const char* cstr=0); //constructor
   String(const String& str); //copy constructor
   String& opeartor=(const String& str);//copy assignment operator 
   char* get_c_str() const {return m_data};
private:
   char* m_data;
};
#endif

//BIG Three in a class:copy constructor,copy assignment operator(op=) and destructor
int main(){

String s1();
String s2("hello");

string s3(s1); //copy constructor
cout << s3 <<end1;
s3 = s2; //copay assignment
cout << s3 <<end;
}


//copy constructor function
inline
String:: String(const char* cstr ==0)
{
    if(cstr){
        m_data= new char[strlen(cstr)+1];
        strcpy(m_data,cstr);
    }
    else{
        m_data = new char[1];
        m_data='\0';
    }
}
inline
String:: String()

{
    delete [] m_data;
}
main()
{
    String s1();
    String s2("hello"); //s1 and s2 can invoke ~String()
    
    String* p = new String("hello"); //p is a pointer, should be delete manually
    delete p;
}

//copy assignment operator  String&: means call reference of class String
inline
String& String::operator= (const String& str)
{
    if(this == &str)   //object str's address: &str
      return *this;
//self assignment checking    
    //this is a pointer, point to current object,members can be accessed by this pointer
    delete[] m_data;
    m_data = new char[strlen[str.m_data]+1];
    strcpy(m_data, str.m_data);
    return *this;
}
main()
{
    String s1("hello");
    String s2(s1);
    s2 = s1;    
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值