zoukankan      html  css  js  c++  java
  • [面试] 写出 string 类的构造,析构,复制构造函数,复制操作符!

    #include <iostream> // 。。。
    #define BUG puts("here!!!");
    
    using namespace std;
    class String {
    private :
    	char *m_data;
    public :
    	String(const char *str = NULL); // 构造函数
    	String(const String &other);    // 拷贝构造函数
    	~String();
    	String& operator= (const String &other); // 赋值函数
    };	
    String::String(const char* str) {
    	if(str == NULL) {
    		m_data = new char[1];
    		m_data[0] = '\0';
    	}
    	else {
    		int len = static_cast<int> (strlen(str));
    		m_data = new char[len + 1];
    		strcpy(m_data, str);
    	}
    }
    String::String(const String &other) {
    	if(other.m_data == NULL) {
    		m_data = new char[1];
    		*m_data = '\0';
    	}
    	else {
    		int len = strlen(m_data);
    		m_data = new char[len+1];
    		strcpy(m_data, other.m_data);
    	}
    }
    String& String::operator= (const String& other) {
    	if(this == &other) return *this;
    	delete []m_data;
    	if(other.m_data == NULL) {
    		m_data = new char[1];
    		m_data[0] = '\0';
    	}
    	else {
    		int len = strlen(other.m_data);
    		m_data = new char[len+1];
    		strcpy(m_data, other.m_data);
    	}
    	return *this;
    }
    String::~String() {
    	delete []m_data;
    }
    int main() {
    	String sa, sb;
    	sa = "abcde";
    	String sc(sa);
    	return 0;
    }

  • 相关阅读:
    CSS 图像左右对齐
    CSS 图像居中对齐
    CSS 图像大小
    CSS表单3 光标样式 (每个位置鼠标放上去的样式不同)
    CSS表单2 组件排版
    对于下一代互联网的畅想
    VMware nat可以 桥接不可以
    jsp 入门
    flask_whooshalchemyplus 搜索
    PasswordField 无法设置默认值
  • 原文地址:https://www.cnblogs.com/robbychan/p/3787007.html
Copyright © 2011-2022 走看看