How can we Print the address of object of class in the member function of that class in C++?
class A { int x; private: A(){x=2;} } int main() { A B; return 0; } How to print the address of B in member function or in main().
How can we Print the address of object of class in the member function of that class in C++?
class A { int x; private: A(){x=2;} } int main() { A B; return 0; } How to print the address of B in member function or in main().
With C++20 you can use std::to_address:
#include <memory> #include <iostream> class A{}; int main() { A B; std::cout << std::to_address(&B) << '\n' } Which has the advantage of being able to accept raw pointers, smart pointers, iterators, and pointer-like objects. Making it useful for cases that require generic code.
If you mean in THAT specific class you have defined. You can't. Your constructor is private and you forgot a semi-colon at the end of your class definition, therefore, your code won't compile.
Ignoring these issues to display the pointer of an object in main you can use
std::cout << &B; Or in a member function you can use
std::cout << this; (Don't forget to include iostream)
I see that there are a lot of answers for your question already, but I don't know why none of them point that you have a private constructor for class A, and the way the object B is being instantiated should throw a compilation error. At least, it did in my case. There is a whole lot of concepts around using private constructors, https://stackoverflow.com/a/2385764/3278350 gives a good idea.