我正在改变一个过去采用整数参数的旧例程,以便它现在对一个对象进行const引用.我希望编译器会告诉我函数的调用位置(因为参数类型错误),但是对象有一个构造函数,它接受一个整数,因此编译器创建一个临时对象,而不是失败,传递给它整数,并将对它的引用传递给例程.示例代码:
class thing { public: thing( int x ) { printf( "Creating a thing(%d)\n",x ); } }; class X { public: X( const thing &t ) { printf( "Creating an X from a thing\n" ); } }; int main( int,char ** ) { thing a_thing( 5 ); X an_x( 6 ); return 1; }
我希望X an_x(6)行不能编译,因为没有X构造函数接受int.但它确实编译,输出如下:
Creating a thing(5) Creating a thing(6) Creating an X from a thing
如何保留thing(int)构造函数,但不允许临时对象?
解决方法
原文地址:https://www.jb51.cc/c/118642.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。