More effective C++ 总结:操作(2)

1. opertor分为操作符重载与隐式转换:
• 操作符重载
C++可以通过operator实现重载操作符,格式如下:类型T operator 操作符 (),比如重载+,比如下面这个例子

template<typename T> class A
    {
    public:
         const T operator+(const T& rhs)
         {
             return this->m_ + rhs;
         }
    private:
         T m_;
    };
•  操作隐式转换
C++可以通过operator实现重载隐式转换,格式如下: operator T (),其中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_) 

**2.

绝对不要重载&& 与 ||符号,重载后没办法提供程序员语气的某种行为模式!

**
3. 不同意义的new 与delect
不要使用new operator与delect operator全部改用 operator new 与opertor delect ,这一组在C++中相当于malloc 和free。
4.C和C++混合编程基本原则:
• 确定C与C++编译器产出兼容的目标文件。
• 要使用extern ‘C’
• 在C++用main 在C中使用RealMain
• Delect 对应new; C中 free对应 malloc;
两个语言之间的“数据结构传递”限制于C所了解的形式;C++不受;

你可能感兴趣的:(C&C++,C++,more,effective,C++,高级C++特性)