两个类型转换有什么不同?

sdlyczl 2007-02-27 02:50:11
auto_ptr类的构造函数是显式的
c++primer plus里一个例子:
auto_ptr<double> pd;
double *p_reg = new double;
//pd = p_reg;//这是隐式
pd = auto_ptr<double>(p_reg);//这是显式
auto_ptr<double> pauto = pd;//这是隐式,所以这句是错的。???这里有类型转换吗?pd,pauto是同一类型啊?
auto_ptr<double> pauto(pd);//这是显式。???这句和上一句有什么不同吗?
...全文
278 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdlyczl 2007-02-28
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
auto_ptr<double> pd;
double *test(new double);
*test = 12.3;
pd = auto_ptr<double> (test);
auto_ptr<double> m;
m.operator =(pd);
cout << *m << endl;
}
这个例子运行没有问题。m.operator =(pd);没得问题嘛
“编译器菜单==》tools==》Editor Options 可以进行设置”我试过,不过没有成功
现在换了个MinGW编译器
jixingzhong 2007-02-27
  • 打赏
  • 举报
回复
重载,测试~
===========
编译器菜单==》tools==》Editor Options 可以进行设置
sdlyczl 2007-02-27
  • 打赏
  • 举报
回复
我是用的vc6,今天刚用了一个dev-c++(4.9.9.2beta),发现它的缩进不好用,比较乱,不知道在哪里能调一下?
”auto_ptr<double> pauto = pd;用的绝不是operator =“这个用编译器也看不出什么来吧?
taodm 2007-02-27
  • 打赏
  • 举报
回复
你试的结果并不一定是通行结论。
auto_ptr<double> pauto = pd;用的绝不是operator =。
你不会在用VC6试这个东西吧。多换几个编译器吧。
sdlyczl 2007-02-27
  • 打赏
  • 举报
回复
auto_ptr<double> pauto = pd;我试了一下,这句是对的。
auto_ptr<int> pauto = pd;//这样就错了
auto_ptr<double> pauto = pd;//这里是用的operator =,没有错
auto_ptr<double> pauto(pd);//这里是复制构造函数,好像没有用到类型转换
auto_ptr<int> pauto(pd);//这里是复制构造函数,用到了类型转换,这样就错了
sdlyczl 2007-02-27
  • 打赏
  • 举报
回复
嗯,已经在当当定了,估计下个周就会来
taodm 2007-02-27
  • 打赏
  • 举报
回复
你还是换《C++ Primer》吧,概念性问题会讲得更准确。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧