简体   繁体   中英

Function Overloading for the standard library functions in C++

I have a free function as part of a class. In the constructor for the class i am doing some malloc operations . So in the destructor i am trying to free that memory. But VS10 compiler complains that the

free(pointer); 

doesn't match the signature of the free function of my class.

So question is In a class wherein if we have implemented methods which have same names as that of standard library functions . How to call one over the other.

Regards,

You have to use the scope operator to get the correct scope of the free function:

::free(pointer);

Having :: at the beginning tells the compiler to look for the free function at the global scope, not the closest scope which is your class.

You should qualify your call to the function:

void YourClass::free(args) {
  ::free(your_member);
}

This will pick up the free function in the global namespace and not in your class.

#include <cstdio> also puts free and malloc into the std namespace, so std::free and std::malloc will also work.

(Use of new / delete should also be considered, as well as smart pointers.)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM