c++ Modify the following so that it uses smart pointers instead of raw pointers. // This program illustrates the use of constructors // and destructors in the allocation and deallocation of memory. #include #include using namespace std; class Squares { private: int length; // How long is the sequence int *sq; // Dynamically allocated array public: // Constructor allocates storage for sequence // of squares and creates the sequence Squares(int len) { length = len; sq = new int[length]; for (int k = 0; k < length; k++) { sq[k] = (k+1)*(k+1); } // Trace cout << "Construct an object of size " << length << endl; } // Print the sequence void print() { for (int k = 0; k < length; k++) cout << sq[k] << " "; cout << endl; } // Destructor deallocates storage ~Squares() { delete [ ] sq; // Trace cout << "Destroy object of size " << length << endl; } }; //*********************************************** // Outputs the sequence of squares in a *

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

c++ Modify the following so that it uses smart pointers instead of raw pointers.

// This program illustrates the use of constructors
// and destructors in the allocation and deallocation of memory.
#include <iostream>
#include <string>
using namespace std;

class Squares
{
private:
int length; // How long is the sequence
int *sq; // Dynamically allocated array
public:
// Constructor allocates storage for sequence
// of squares and creates the sequence
Squares(int len)
{
length = len;
sq = new int[length];
for (int k = 0; k < length; k++)
{
sq[k] = (k+1)*(k+1);
}
// Trace
cout << "Construct an object of size " << length << endl;
}
// Print the sequence
void print()
{
for (int k = 0; k < length; k++)
cout << sq[k] << " ";
cout << endl;
}
// Destructor deallocates storage
~Squares()
{
delete [ ] sq;
// Trace
cout << "Destroy object of size " << length << endl;
}
};

//***********************************************
// Outputs the sequence of squares in a *
// Squares object *
//***********************************************
void outputSquares(Squares *sqPtr)
{
cout << "The list of squares is: ";
sqPtr->print();

}


int main()
{
// Main allocates a Squares object
Squares *sqPtr = new Squares(3);
outputSquares(sqPtr);
  
// Main deallocates the Squares object
delete sqPtr;

return 0;
}

Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 5 steps

Blurred answer
Knowledge Booster
Concept of pointer parameter
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education