C++中标准库函数的函数重载
Function Overloading for the standard library functions in C++
我有一个自由函数作为类的一部分。在类的构造函数中,我正在执行一些malloc
操作。所以在destructor
中,我试图释放内存。但是VS10编译器抱怨
free(pointer);
与我类的自由函数的签名不匹配。
所以问题是在一个类中,如果我们实现了与标准库函数同名的方法。如何呼叫一个而不是另一个。
问候,
您必须使用scope运算符来获得free
函数的正确作用域:
::free(pointer);
将::
放在开头告诉编译器在全局作用域中查找free
函数,而不是在与类最接近的作用域中。
您应该限定对函数的调用:
void YourClass::free(args) {
::free(your_member);
}
这将在全局命名空间中而不是在类中获取free
函数。
#include <cstdio>
还将free
和malloc
放入std
命名空间中,因此std::free
和std::malloc
也将工作。
(还应考虑使用new
/delete
以及智能指针。)
相关文章:
- 为什么使用SFINAE而不是函数重载
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- c++:可变模板和函数重载
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 解决模板成员函数重载
- 为什么不允许成员函数和非成员函数之间的函数重载?
- 推断模板化函数中的函数重载
- C++复制函数重载导致"must be a nonstatic member function"错误
- 为什么 std::sort 找不到合适的(静态成员)函数重载?
- 可变参数泛型 lambda 和函数重载
- C++中的函数重载和继承
- 当有右值构造函数可用时,为什么从右值调用类引用构造函数重载?
- C/C++ 可变参数宏函数重载
- 将基类的成员函数重载到其他派生类C++
- C++ 函数重载匹配
- C++函数重载,具体步骤是什么
- C++:使用 param pack 显式调用函数重载
- 隐式生成的函数重载用于右值参数?
- 使用函数重载输入运算符
- 运算符重载函数上的函数重载