1-ma’ruza C++ da Sinflar va obyektlar. Konstruktor va destruktor. Sinf usullari reja


Sinf shablonlari va sarlavha fayllari


Download 86.61 Kb.
bet15/23
Sana09.06.2023
Hajmi86.61 Kb.
#1472539
1   ...   11   12   13   14   15   16   17   18   ...   23
Bog'liq
Algoritmlashga kirish fanidan majmua

Sinf shablonlari va sarlavha fayllari
Shablon sinf ham, funksiya ham emas - bu sinflar yoki funksiyalarni yaratish uchun ishlatiladigan shablondir. Shunday qilib, andozalar oddiy funksiyalar yoki sinflarga qaraganda boshqacha ishlaydi. Aksariyat hollarda bu muammo emas, lekin amalda turli vaziyatlar mavjud.
Muntazam sinflar bilan ishlaganda biz sinf taʼrifini sarlavha fayliga, ushbu sinf usullarining taʼriflarini esa bir xil nomdagi alohida .cpp fayliga joylashtiramiz. Shunday qilib, haqiqiy sinf ta'rifi loyiha ichida alohida fayl sifatida tuzilgan. Biroq, shablonlarda hamma narsa biroz boshqacha sodir bo'ladi (Nima uchun sinf usullarining ta'rifini alohida faylga qo'yish kerakligi haqida materiallarida o'qing).
Quyidagilarni ko’rib chiqing.

#ifndef ARRAY_H


#define ARRAY_H
#include // для assert()
template
class Array
{
private:
int m_length;
T *m_data;
public:
Array()
{
m_length = 0;
m_data = nullptr;
}
Array(int length)
{
m_data = new T[length];
m_length = length;
}
~Array()
{
delete[] m_data;
}
void Erase()
{
delete[] m_data;
// Osilib turgan ko'rsatkichni oldini olish uchun m_data ni nullptr ga o'rnating!
m_data = nullptr;
m_length = 0;
}
T& operator[](int index)
{
assert(index >= 0 && index < m_length);
return m_data[index];
}
// Massiv uzunligi har doim butun son bo'lib, massiv elementlarining turiga bog'liq emas.
int getLength();
};
#endif
Array.h:
#include "Array.h"
template
int Array::getLength() { return m_length; }
main.cpp:
#include "Array.h"
int main()
{
Array intArray(10);
Array doubleArray(10);
for (int count = 0; count < intArray.getLength(); ++count)
{
intArray[count] = count;
doubleArray[count] = count + 0.5;
}
for (int count = intArray.getLength()-1; count >= 0; --count)
std::cout << intArray[count] << "\t" << doubleArray[count] << '\n';
return 0;
}
Yuqoridagi dastur kompilyatsiya qiladi, lekin quyidagi bog'lovchi xatosini chiqaradi:

Download 86.61 Kb.

Do'stlaringiz bilan baham:
1   ...   11   12   13   14   15   16   17   18   ...   23




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling