Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Safe Array header
- // динамичен масив и големина на масива
- //предеф на []
- #pragma once
- #include<cassert>
- #include<iostream>
- class SafeArray{
- private:
- int *arr;
- size_t sizeOfArray;
- public:
- //big 5
- SafeArray();
- //not pasrt of big 5
- SafeArray(size_t);
- SafeArray(int*, size_t);
- SafeArray(const SafeArray &);
- SafeArray& operator = (const SafeArray &);
- ~SafeArray();
- //getter
- int set_sz(size_t);
- size_t get_sz() const;
- //предеф на [] => Задължително член-фунцкии
- //връщаме адреса, защото при arr[1]=5; променяваме обекта, а шом променяме връщаме по референция
- //не подаваме конст ,защото са 1.приимитивна променлива и 2. при битово копиране се създава копие и не правим мизерии с оригинала
- int &operator [](size_t);
- int &operator [](size_t) const;
- //предеф на () - сума на елементите до този индекс
- int operator ()(size_t) const;
- };
- std::ostream& operator <<(std::ostream, const SafeArray &);
- // синамичен масив и големина на масива
- //предеф на []
- #pragma once
- #include<cassert>
- #include<iostream>
- class SafeArray{
- private:
- int *arr;
- size_t sizeOfArray;
- public:
- //big 5
- SafeArray();
- //not pasrt of big 5
- SafeArray(size_t);
- SafeArray(int*, size_t);
- SafeArray(const SafeArray &);
- SafeArray& operator = (const SafeArray &);
- ~SafeArray();
- //getter
- int set_sz(size_t);
- size_t get_sz() const;
- //предеф на [] => Задължително член-фунцкии
- //връщаме адреса, защото при arr[1]=5; променяваме обекта, а шом променяме връщаме по референция
- //не подаваме конст ,защото са 1.приимитивна променлива и 2. при битово копиране се създава копие и не правим мизерии с оригинала
- int &operator [](size_t);
- int &operator [](size_t) const;
- //предеф на () - сума на елементите до този индекс
- int operator ()(size_t) const;
- };
- std::ostream& operator <<(std::ostream, const SafeArray &);
- //Safe Array cpp
- #include"SafeArray.h"
- #include<iostream>
- #include<cassert>
- //sizeOfArray
- //arr
- SafeArray::SafeArray(): sizeOfArray(0),arr(NULL){}
- SafeArray::SafeArray(size_t sz):sizeOfArray(sz),arr(new int[sizeOfArray]){}
- SafeArray::SafeArray(int* arr, size_t sizeOfArray){
- this->sizeOfArray = sizeOfArray;
- this->arr = new int[sizeOfArray];
- for (size_t i = 0; i < sizeOfArray; i++)
- {
- this->arr[i] = arr[i];
- }
- }
- SafeArray::SafeArray(const SafeArray & right){
- sizeOfArray = right.sizeOfArray;
- arr = new int[sizeOfArray];
- for (size_t i = 0; i < sizeOfArray; i++)
- {
- arr[i] = right.arr[i];
- }
- }
- SafeArray& SafeArray::operator = (const SafeArray &right){
- if (this == &right){ // a=a защита
- if (arr != NULL){
- //освобождаваме заетата памет
- delete[]arr;
- }
- }
- sizeOfArray = right.sizeOfArray;
- arr = new int[sizeOfArray];
- for (size_t i = 0; i < sizeOfArray; i++)
- {
- arr[i] = right.arr[i];
- }
- return *this;
- }
- SafeArray::~SafeArray(){
- delete[] arr;
- }
- int SafeArray::set_sz(size_t pesho){
- this->sizeOfArray = pesho;
- return 0;
- }
- size_t SafeArray::get_sz() const{
- return sizeOfArray;
- }
- int& SafeArray::operator [](size_t index){
- assert(index >= 0 && index < sizeOfArray);
- //връща exception
- return arr[index];
- }
- int SafeArray::operator()(size_t index)const{
- assert(index >= 0 && index < sizeOfArray);
- int sum = 0;
- for (size_t i = 0; i < index; i++)
- {
- sum += arr[index];
- }
- return sum;
- }
- int & SafeArray::operator [](size_t index) const{
- assert(index >= 0 && index < sizeOfArray);
- //връща exception
- return arr[index];
- }
- std::ostream& operator <<(std::ostream out, const SafeArray & object){
- out << "{";
- for (size_t i = 0; i < object.get_sz(); i++)
- {
- out << object[i] << " , ";
- if (i = object.get_sz() - 1){
- out << object[i];
- }
- }
- out << "}";
- return out;
- }
- //IDGenerator header
- #pragma once
- class IDGenerator{
- private:
- static size_t id;
- public:
- static size_t idIncr();
- };
- //IDGenerator cpp
- #include"IDGenerator.h"
- #include<iostream>
- //мога да инициализирам тук
- size_t IDGenerator::id = 1;
- size_t IDGenerator::idIncr(){
- return ++id;
- }
- #include"IDGenerator.h"
- #include"SafeArray.h"
- #include<iostream>
- using namespace std;
- int main(){
- //мога да инициализирам static и тук, въпреки, че е private
- for (size_t i = 0; i < 20; i++)
- {
- cout << IDGenerator::idIncr() << endl;
- }
- SafeArray arr(10);
- for (size_t i = 0; i < 10; i++)
- {
- arr[i] = IDGenerator::idIncr();
- }
- cout << arr << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement