【问题标题】:Overload reference conversions重载参考转换
【发布时间】:2012-03-09 04:21:23
【问题描述】:

下面的类似乎是compile,但从未调用过转换运算符:

class A
{
public:
  operator A() const { std::cout << "A() called" << std::endl; return *this; }
  operator A&() { std::cout << "A&() called" << std::endl; return *this; }
  operator const A&() const { std::cout << "const A&() called" << std::endl; return *this; }
};

指定转换为对自身的引用的函数是否被忽略?

【问题讨论】:

  • 我相信有人会引用这个标准,但同时我要声明一个显而易见的事实:这根本没有任何意义。

标签: c++ reference type-conversion implicit-conversion


【解决方案1】:

这是 12.3.2 的引述

A conversion function is never used to convert a (possibly cv-qualified) object to the (possibly cv-qualified) same object type (or a reference to it)

另外,在 gcc 上使用 -Wall -Wextra -pedantic -ansi 给了我:warning: this statement has no effect 用于静态转换。 (另外,试试clang online,它会给你一些不错的编译器错误消息)。

【讨论】:

    猜你喜欢
    • 2014-03-25
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多