Open In App

std::bad_weak_ptr class in C++ with Examples

Last Updated : 28 May, 2020
Improve
Improve
Like Article
Like
Save
Share
Report

Standard C++ contains several built-in exception classes, std::bad_weak_ptr is one of them. std::bad_weak_ptr is the type of the object thrown as exceptions by the constructors of shared_ptr that take weak_ptr as the argument, when the weak_ptr refers to an already deleted object. Below is the syntax for the same:

Header File:

<memory>

Syntax:

class bad_weak_ptr: public exception;

Note: To make use of std::bad_weak_ptr, one should set up the appropriate try and catch blocks.

Below are the programs to understand the implementation of std::bad_weak_ptr in a better way:

Program 1 :




// C++ code for std::bad_weak_ptr
  
#include <bits/stdc++.h>
  
using namespace std;
  
// main method
int main()
{
    shared_ptr<int> gfg1(new int(75));
  
    weak_ptr<int> wp(gfg1);
    gfg1.reset();
  
    // try block
    try {
        shared_ptr<int> gfg2(wp);
    }
  
    // catch block to handle the errors
    catch (const bad_weak_ptr& gfg) {
        cout << gfg.what() << endl;
    }
    return 0;
}


Output:

bad_weak_ptr

Program 2 :




// C++ code for std::bad_weak_ptr
  
#include <bits/stdc++.h>
  
using namespace std;
  
// main method
int main()
{
    shared_ptr<int> geeksforgeeks(new int(75));
  
    weak_ptr<int> wp(geeksforgeeks);
    geeksforgeeks.reset();
  
    // try block
    try {
        shared_ptr<int
        A_Computer_Science_portal_for_Geeks(wp);
    }
  
    // catch block to handle the errors
    catch (const bad_weak_ptr& gfg) {
        cout << gfg.what() << endl;
    }
}


Output:

bad_weak_ptr

Reference: www.cplusplus.com/reference/memory/bad_weak_ptr/



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads