账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    对象为何可以访问私有成员
    34
    0

    下面代码中operator=中str.m_data m_data不是私有的吗,为何跑起来没有问题,真是非常奇怪。
    string.h

    #ifndef __MYSTRING__
    #define __MYSTRING__
    
    #include <iostream>
    using namespace std;
    
    class String
    {
    public:                                 
       String(const char* cstr=0);                     
       String(const String& str);                    
       String& operator=(const String& str);         
       ~String();                                    
       char* get_c_str() const { return m_data; }
    private:
       char* m_data;
    };
    
    #include <cstring>
    
    inline
    String::String(const char* cstr)
    {
       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;
    }
    
    inline
    String& String::operator=(const String& str)
    {
       if (this == &str)
          return *this;
    
       delete[] m_data;
       m_data = new char[ strlen(str.m_data) + 1 ];
       strcpy(m_data, str.m_data);
       return *this;
    }
    
    inline
    String::String(const String& str)
    {
       m_data = new char[ strlen(str.m_data) + 1 ];
       strcpy(m_data, str.m_data);
    }
    
    
    
    ostream& operator<<(ostream& os, const String& str)
    {
       os << str.get_c_str();
       return os;
    }
    
    #endif
    
    

    main.cpp

    #include "string.h"
    #include <iostream>
    
    using namespace std;
    class str{
    public:
    private:
        char * m_data;
    };
    
    int main()
    {
      String s1("hello"); 
      String s2("world");
    
      String s3(s2);
      cout << s3 << endl;
      
      s3 = s1;
      cout << s3 << endl;     
      cout << s2 << endl;  
      cout << s1 << endl;      
    }
    
    
    
    3
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部