C++中操作符operator的两种用法
2009-03-28 11:50
288 查看
1.operator overloading
C++可能通过operator 重载操作符,格式如下:类型T operator 操作符 (),如比重载+,如下所示
template<typename T> class A
{
public:
const T operator + (const T& rhs)
{
return this->m_ + rhs;
}
private:
T m_;
};
又比如STL中的函数对象,重载(),如下所示
template<typename T> struct A
{
T operator()(const T& lhs, const T& rhs){ return lhs-rhs;}
};
2 operator casting
C++可能通过operator 重载隐式转换,格式如下: operator 类型T (),如下所示
class A
{
public:
operator B* () { return this->b_;}
operator const B* () {return this->b_;}
operator B& () {return *this->b_;}
private:
B* b_;
};
A a;
当if(a),编译时,其中它转换成if(a.operator B*()),其实也就是判断 if(a.b_)
C++可能通过operator 重载操作符,格式如下:类型T operator 操作符 (),如比重载+,如下所示
template<typename T> class A
{
public:
const T operator + (const T& rhs)
{
return this->m_ + rhs;
}
private:
T m_;
};
又比如STL中的函数对象,重载(),如下所示
template<typename T> struct A
{
T operator()(const T& lhs, const T& rhs){ return lhs-rhs;}
};
2 operator casting
C++可能通过operator 重载隐式转换,格式如下: operator 类型T (),如下所示
class A
{
public:
operator B* () { return this->b_;}
operator const B* () {return this->b_;}
operator B& () {return *this->b_;}
private:
B* b_;
};
A a;
当if(a),编译时,其中它转换成if(a.operator B*()),其实也就是判断 if(a.b_)
相关文章推荐
- C++中操作符operator的两种用法
- C++中操作符operator的两种用法
- C++中的operator的两种用法
- C++学习 operator两种用法详解
- C++ operator两种用法
- c++ 中 operator的两种用法
- c++ 中 operator的两种用法
- C++中operator的两种用法
- C++ operator两种用法
- C++ sizeof 操作符的用法总结
- operator的另一种用法:操作符隐式转换
- C/C++ sizeof操作符用法详解
- C++中 extern "C" 的两种用法
- c++中优化内存分配:new/delete操作符;allocator类对象的使用;operator new/operator delete函数及定位new表达式
- C++类型转换操作符(type conversion operator)
- C++中 extern "C" 的两种用法
- C++ sizeof操作符的用法和strlen函数的区别
- C/C++中sizeof操作符的用法
- c/c++调用libcurl库发送http请求的两种基本用法
- c++中new和delete操作符用法