GeekBand-C++面向对象高级编程(下)-Week1

转换函数

class A {
public:
   operator double() {
        // return a double value
    }
};

explicit关键字

class A {
public:
    explicit A(int a) {}
};

指定构造函数需要显式调用,这样编译器就不会做隐式转换,避免因one-argument构造函数而导致意料之外的类型转换。

pointer-like class

class A {
public:
    T& operator*() {
        return *data;
    }
    T* operator->() {
        return data;
    }
private:
    T* data;
};

function-like class

class A {
public:
    operator() {}
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容