본문 바로가기

카테고리 없음

constructor with reference (copy constructor)

#include "stdafx.h"

#include <iostream>

#include <string>


using namespace std;


class String

{

private:

char *str;

int len;


public:

String();

String(const char *str);

String(const String &copy);


const char *c_str();


void Release();

};


int main()

{

String str1 = "String";

String str2 = str1;


cout << str1.c_str() << endl;

cout << str2.c_str() << endl;


str1.Release();

str2.Release();


return 0;

}


String::String() 

: str(0), len(0){

str = new char;

*str = 0;

}


String::String(const char *str)

:str(0), len(0)

{

for (len = 0; str[len]; len++);


this->str = new char[len + 1];


for (int i = 0; i < len + 1; i++) {

this->str[i] = str[i];

}

}


const char *String::c_str() { return str; }


void String::Release() {

delete[] str;


return;

}


String::String(const String &copy)

: str(0), len(copy.len)

{

str = new char[len + 1];


for (int i = 0; i < len+1; i++)

{

str[i] = copy.str[i];

}

}