Witam, otóż mam pewien problem z debugowaniem się programu, a mianowicie kompilacja przechodzi ok - dodam że używam Microsoft Visual Studio 2012.
A oto treść zadania i mój kod.
Zadanie:
1.Stworzyć klasę A, która zawiera wskaźnik typu char do wiersza tekstowego. Konstruktor sparametryzowany pobiera z listy argumentów formalnych wiersz tekstowy, wyjaśnia, ile elementów zawiera ten wiersz, dynamicznie alokuje pamięć i kopiuje wiersz tekstowy, pobierany z listy argumentów konstruktora, do składowej klasy. Konstruktor domyślny inicjuje wskaźnik do wiersza tekstowego na NULL. Klasa zawiera metodę disp() dla wyświetlania wiersza na monitorze.
Każdy z konstruktorów wyprowadzi na monitor jeden z komunikatów „konstruktor domyślny”, „konstruktor sparametryzowany” oraz „konstruktor kopii”, destruktor – „destruktor”.
A oto moj kod:
// Program1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class A
{
char *wskaznik;
public:
A(): wskaznik(NULL)
{
cout<<"Konstruktor domyślny"<<endl;
}
A(char *tekst);
A(A &obiekt);
~A();
void disp();
};
A::A(char *tekst)
{
int dlugosc;
if(tekst)
{
dlugosc=strlen(tekst);
try
{
wskaznik=new char[dlugosc+1];
}
catch(bad_alloc)
{}
strcpy_s(wskaznik, dlugosc, tekst);
}
else
wskaznik=NULL;
cout<<"Konstruktor sparametryzowany"<<endl;
}
A::A(A &obiekt)
{
int dlugosc;
if(obiekt.wskaznik)
{
dlugosc=strlen(obiekt.wskaznik);
try
{
wskaznik=new char[dlugosc+1];
}
catch (bad_alloc) {}
strcpy_s (wskaznik, dlugosc, obiekt.wskaznik);
}
else
wskaznik=NULL;
cout<<"Konstruktor kopii"<<endl;
}
A::~A()
{
if(wskaznik)
{
delete [] wskaznik;
cout<<"Dekonstruktor"<<endl;
}
}
void A::disp()
{
if(wskaznik)
cout<<wskaznik<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
A ob("obiekt 1");
ob.disp();
system("pause");
return 0;
}