Тестування, яке нотаток. С++, Qt5.

#include

#include

class class1{

public:

class1(){

qDebug(“=== constructor class1”);

m_w=10;

qDebug()«“class1::array size”«m_w;

m_a= new uchar[m_w];

m_a[0]=’Z’;

}

void getArray(int &w, uchar *&a)

{

qDebug(“=== getArray”);

w=m_w;

a=m_a;

}

uchar *getArrayRet(int &w){

qDebug(“=== getArrayRet”);

w=m_w;

return m_a;

}

void eraseArray()

{

qDebug(“=== eraseArray”);

delete[]m_a;

m_a=nullptr;

qDebug()«“eraseArray m_a”«m_a;

}

void printArray()

{

qDebug(“=== printArray inside”);

if (m_a) qDebug()«“class1::getArray2”«m_a«*m_a«(char)m_a[0];

}

private:

uchar *m_a;

int m_w;

};

int main(int argc, char *argv[])

{

uchar *array=nullptr;

int sizearray=0;

class1 *c1=new class1();

c1->getArray(sizearray,array);

qDebug()«“Array ptr ret”«array«sizearray;

if (array) qDebug()«“array[0]”«array[0];

c1->printArray();

c1->eraseArray();

array=c1->getArrayRet(sizearray);

qDebug()«“Array ptr getArrayReturn”«array«sizearray;

if (array) qDebug()«“array[0]”«array[0];

c1->getArray(sizearray,array);

qDebug()«“Array ptr getArray”«array«sizearray;

if (array) qDebug()«“array[0]”«array[0];

QCoreApplication a(argc, argv);

return a.exec();

}

Результат:

=== constructor class1
class1::array size 10
=== getArray
Array ptr ret 0x262fc6a1dc0 10
array[0] 90
=== printArray inside
class1::getArray2 0x262fc6a1dc0 90 Z
=== eraseArray
eraseArray m_a 0x0
=== getArrayRet
Array ptr getArrayReturn 0x0 10
=== getArray
Array ptr getArray 0x0 10