Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. #include <iostream>
  2. #include "vettore.h"
  3. using std::ostream;
  4. using std::endl;
  5. using std::cout;
  6.  
  7. vettore::vettore(unsigned int s, int x):punt(s == 0 ? nullptr : new int[s]), size(s){
  8. for(int i=0; i<size; ++i){
  9. punt[i]=x;
  10. }
  11. }
  12. unsigned int vettore::_size() const{
  13. return size;
  14. }
  15. vettore::vettore(const vettore& v):punt(v._size() == 0 ? nullptr : new int[v._size()]), size(v._size()){
  16. for(int i=0; i<size; ++i){
  17. this[i] = v[i]; // lui fa cosi v.punt[i], ma perché NON v[i] direttamente??
  18. // soprattutto essendo l'perator[] ridefinio;
  19. }
  20. }
  21. vettore::~vettore(){
  22. delete[] punt;
  23. }
  24. ostream& operator<<(ostream& os, const vettore& v){
  25. for(int i=0; i<v._size(); ++i){
  26. os<<" "<<v[i];
  27. }
  28. return os;
  29. }
  30.  
  31. int& vettore::operator[](unsigned int i) const{
  32. return punt[i];
  33. }
  34.  
  35. vettore operator+(const vettore& v1, const vettore& v2){ // quandi si è costretti ad avere due operatori, usare sempre oggetto di supporto
  36. vettore aux(v1._size()+v2._size()); // mi serve un indice per entrambi
  37. int i=0,sec=0;
  38. for(i; i<v1._size(); ++i) aux[i]=v1[i];
  39. for(i; i<aux._size(); ++i){
  40. aux[i]=v2[sec];
  41. sec++;
  42. }
  43. return aux;
  44. }
  45. void vettore::append(const vettore& v){ //domanda magari stupida, ma se io dereferenzio *this ottengo l'oggetto di invocazione perch* this è un puntatore a calsse o tipo giusto ?
  46. *this=*this+v;
  47. }
  48. bool vettore::operator==(const vettore& v)const{ // da chidere perché *this == v.punt non va bene e perché *this.punt == v.punt non va bene
  49. if(this == &v) return true;
  50. if(this->size != v._size()) return false;
  51. for(int i=0; i<this->size; ++i){
  52. if(this->punt[i] != v[i]) return false; // perché con v[i] okay e con *this[i] non funge ? okay basta aggiungere le parentesi bha
  53. }
  54. return true;
  55. }
  56. vettore& vettore::operator=(const vettore& v){
  57. if(this != &v){
  58. delete[] punt;
  59. punt = v._size() == 0 ? nullptr : new int[v._size()];
  60. size=v._size();
  61. for(int i=0; i<v._size(); ++i){
  62. this->punt[i] = v[i];
  63. }
  64. }
  65. return *this; // perché devo ritornare *this e non semplicemente this?
  66. }
  67. int main() {
  68. vettore v1(1), v2(3), v3(2,1);
  69. v1 = v2+v3;
  70. v2.append(v1);
  71. v3.append(v1);
  72. cout << v1 <<" v1"<<endl;
  73. cout << v2 <<" v2"<<endl;
  74. cout << v3 <<" v3" <<endl;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement