SOJ.MyString Class

MyString Class
 
時間限制:1秒    內存限制:256兆
題目描述

定義一個MyString類如下,該類有構造函數、拷貝構造函數、析構函數、成員函數和靜態成員函數,有一個C字符串指針變量,還有一個靜態成員變量numberOfObjects。請你完成類的實現。

class MyString

{

public:

    MyString(const char*);

    MyString(int = 0, char = '\0');  //initialize size_t number of char, terminated with '\0'

    MyString(const MyString&);           //copy constructor

    ~MyString();                                          //destructor

    const char* c_str();                   //return private char*

    static int getNumberOfObjects();

private:

    char *str;

    static int numberOfObjects;             //count the number of MyString objects

};

請提交類的定義及其完整實現。

 

樣例輸入
樣例輸出
ccccc
Hello!
1
提示

請認真理解類的構造函數、重載、靜態成員變量及其初始化、RAII(資源獲取就是初始化)以及new和delete的使用、深拷貝。測試數據中不會發生內存不夠的現象。


主函數形式如下:
int main()
{
       MyString ms1(5, 'c');
       cout << ms1.c_str() << endl;
       MyString *ptr_ms2 = new MyString("Hello!");
    {
        MyString ms3(ms1);
    }
    cout << ptr_ms2->c_str() << endl;
    delete ptr_ms2;
    cout << MyString::getNumberOfObjects() << endl;
        return 0;
}


#include
#include
using namespace std;
class MyString
{
public:
    MyString(const char*);
    MyString(int = 0, char = '\0');
    MyString(const MyString&); 
    ~MyString();                                  
    const char* c_str();               
    static int getNumberOfObjects();
private:
    char *str;
    static int numberOfObjects;
};
int MyString::numberOfObjects=0;
MyString::MyString(const char* s){
    for(int i=0;i

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章