Skip to main content

How to stop someone to taking address of your object in C++?

Method 1:- Overloaded '&' operator and keep it private 

#include <iostream> 

using namespace std; 

 

class Base 

{ 

    int x; 

public: 

    Base(){} 

 

private: 

    Base* operator &() 

    { 

        return this; 

    } 

}; 

 

int main() 

{ 

    Base b; 

    Base *bp = &b; 

    cout << &b << endl; 

    cout << bp << endl; 

    return 0; 

} 

 

O/P: error: 'Base* Base::operator&()' is private within this context 


Method 2:- delete '&' operator from your class, C++11


#include <iostream> 

using namespace std; 

 

class Base 

{ 

    int x; 

public: 

    Base(){} 

    Base* operator &() = delete; 

}; 

 

int main() 

{ 

    Base b; 

    Base *bp = &b; 

    cout << &b << endl; 

    cout << bp << endl; 

    return 0; 

} 


O/P: error: use of deleted function 'Base* Base::operator&()' 

Comments

Popular posts from this blog

Understanding push_back and emplace_back in C++

| Understanding push_back and emplace_back in C++ C++ provides several mechanisms to add elements to its containers, and two often used are push_back and emplace_back . Understanding the difference between these methods can help you write more efficient and expressive code. Let's delve into these concepts with examples to illustrate their usage and benefits.

Reasons for a C++ Program Crash

C++ programs may crash unexpectedly for various reasons. Here are some typical causes of such crashes: Segmentation Fault A segmentation fault is a major cause of program crashes. It occurs when: Attempting to access a memory location that doesn’t exist. Trying to write to a read-only memory location. Accessing protected memory locations, such as kernel memory. Example: int main() {     char *text;     // Stored in the read-only part of the data segment     text = "ABC";     // Problem: trying to modify read-only memory     *(text + 1) = 'n';     return 0; }   Stack Overflow Stack overflow happens due to non-terminating recursion, which exhausts the stack memory. Example: #include <stdio.h> void functionRecursive(int num)  {     if (num =...

Local Classes in C++: A Deep Dive

Understanding Local Classes in C++: A Deep Dive A class declared within a function is known as a local class in C++. These classes are specific to the function in which they are declared and offer several unique characteristics and constraints. What is a Local Class? A local class is a class defined within a function. For instance, in the following example, the Test  class is local to the fun()  function: #include<iostream>  using namespace std;  void fun()    {      class Test  // local to fun      {          // members of the Test class     };  }  int main()  {      return 0;  } Interesting Facts About Local Classes Scope Limitation A local class type name can only be used within the enclosing function. For example, in the following program, the LocalClass is valid within myFunction() , but not in main() . #include <iostream> void myFunct...