Hoşgeldin Misafir

C++ Sınıflarla Malloc ile Hafızadan Yer Ayırma ve O Bölümlere Harf Basma

MiRaT

13 Kas 2017
2,077 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
Point.h

Kod:
#ifndef POINT_H
#define POINT_H
#include <iostream>//kütüphane tanımlaması yapılıyor
#include <cstdlib>//kütüphane tanımlaması yapılıyor
using namespace std;//isim uzayı tanımlıyoruz her satırın başına std: koymamak için
 
class point//point adında sınıflama yapılıyor
{
    public://herkesin erişebileceği bilgilerin yer aldığı blok
        point(int sinir);//constructor yani sınıfla ilgili işlem yapıldığında ilk çalışacak blok
        virtual ~point();//destructor yani program kapanırken çalışacak blok
        **** harfekle(char harf);//harf ekle fonksiyonumuzu tanımlıyoruz
        **** harfsil();//harfsil fonksyonunu tanımlıyoruz
        **** yaz();//bilgileri ekrana basan kodlarımız
    private://sadece bu sınıfın üyesi olanların erişebileceği blok
        char *p;//char tipinde p adında bir pointer tanımlıyoruz
        int alinacakYer;//integer tipinde alinacakYer adında bir değişken
        int yer;//integer tipinde yer adında bir değişken
};
 
#endif // POINT_H


Point.cpp

Kod:
#include "point.h"//headerımızı çağırıyoruz
 
point::point(int sinir)//constructor
{
    alinacakYer=sinir;//constructor a gelen veriyi alinacakyer değişkenine ata
    p=(char *) malloc(alinacakYer);//alınacakyer kadar hafızadan yer ayır ve bu alanı p değişkeninde tut
    if(!p){//p değeri false ise
    cout<<"yer alamadık";//ekrana yaz yer alamadık yaz.
    exit(0);/programı bitir
    }else{//p değeri true ise
    cout<<alinacakYer<<" yer aldım"<<endl;//ekrana yer aldım yaz.
    *p=NULL;//p pointerının içeriğine NULL bas
    yer=0;//yer değikeninin ilk değeri 0 olsun.
    }
 
}
 
point::~point()//destructor
{
    cout<<"geri veriyorum"<<endl;//geri veriyorum diye ekrana yazıyor
    free(p);//p ponterının aldığı değeri geri veriyoruz
}
 **** point::harfekle(char harf){//harfekle fonksiyonumuzu yazıyoruz
     p[yer]=harf;//p değişkeninin hafızadan ayırdığı bölümlere gelen harfi ekliyor
     yer++;//yeri 1 arttır
     p[yer]=NULL;//p değişkeninin son bölümüne NULL basılıyor
 
 }
**** point::yaz(){
            cout<<p<<endl;      //p değişkeninin içeriği ekrana yazılıyor
  }
 
 
**** point::harfsil(){
              p[yer-1]=NULL;//p değişkeninin sondan bir harfine NULL bas.
 }


Main.cpp

Kod:
#include <iostream>
#include "point.h"
using namespace std;
 
int main()
{
    point po(10);
    po.harfekle('S');
    po.harfekle('E');
    po.yaz();
    po.harfsil();
    po.yaz();
    return 0;
}