コンストラクタとデストラクタ

malloc()とfree()関数を使って、メモリの割り当てと解放をしています。

#include 
#include 
#include 
using namespace std;

#define SIZE 255

class strtype {
    char * p;
    int len;
public:
    strtype();
    ~strtype();
    void set(char *ptr);
    void show();
};

strtype::strtype()
{
    p = (char *) malloc(SIZE);
    if(!p){
        cout << "error memory\n";
        exit(1);
    }
    *p = '\0';
    len = 0;
}

strtype::~strtype()
{
    cout << "release p\n";
    free(p);
}

void strtype::set(char *ptr)
{
    if(strlen(ptr) >= SIZE){
        cout << "character is bigger \n";
        return;
    }
    strcpy(p, ptr);
    len = strlen(p);
}

void strtype::show()
{
    cout << p << " - long: " << len;
    cout << "\n";
}

int main()
{
    strtype s1, s2;
    
    s1.set("this is a test.");
    s2.set("I like C++.");
    s1.show();
    s2.show();
    
    return 0;
}