| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖, 1 人收藏
标题:0和NULL的问题
只看楼主 加入收藏
lintaoyn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:606
专家分:2499
注 册:2009-4-8
收藏
得分:0 
const char * CPNULL = 0;
const unsigned long  ZEROUL = 0UL;
那就定义一些常量,常量都是有类型的,这样编译器就能识别要调用哪个构造函数。

迭代的是人,递归的是神。
2011-08-11 07:49
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
回复 10楼 八画小子
我的确不是高手,目前我只学到了链表而已,连摸板都还没有学,更别说异常处理了
不知道你学了C++多少时间,对于你那种问题我觉得很好笑,告诉你解决方法但你自己连我说的方法看都不看,说我乱说,
你有自己解决问题能力吗?事事都需要说穿吗?!
你那程序很明显就是你定义了两个构造函数 但输入一个0的数字,同时可以调用这2个构造函数,编译器不知道该调用哪个所以报错,
例子:
#include <iostream>
using namespace std;

class A
{
private:
   
public:
    A(){};
    A(long x){};
    A(char *a){};
};

void main()
{
    A a((long)0);
    A b((char*)0);
}



如果你这都看不懂那没办法和你沟通

[ 本帖最后由 xg5699 于 2011-8-12 12:37 编辑 ]

都不结贴我郁闷那!
2011-08-12 11:20
zhoufeng1988
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:北京
等 级:贵宾
威 望:27
帖 子:1432
专家分:6329
注 册:2009-5-31
收藏
得分:5 
大家都和谐都哈!xg5699也是够意思,为了帮你解决问题。

ValueNode num; num = 0;

我也是看到这段源码之后也会有一些想法的。

首先看num,这个是调用ValueNode的默认构造函数。
num = 0;
,这个又是怎么回事呢?
其实这个语句会去调用ValueNode的拷贝构造函数,而到这里,如果你没有重写拷贝构造函数和构造函数没有指定为explicit(防止构造函数的隐式转换)的话,会尝试将0转换为构造函数的参数类型。再下来就是9楼的了. 0为空指针,可以赋值为指针,也可以赋值给unsigned long long形参,产生二义性。

0有空指针的意思,其他常数就不行了,得通过强制类型转换。

这个问题,是得看你的具体程序,你如果没有给出构造函数是什么样,是无法判断的。
2011-08-12 11:58
xg5699
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:140
专家分:522
注 册:2011-7-27
收藏
得分:0 
回复 13楼 zhoufeng1988
厉害!学习了,关于构造函数的隐式转换我就不清楚了,
 我只知道上面个例子A b((char*)0)可以调用自己想调用的构造函数传递数据,就不会产生二义性了.


[ 本帖最后由 xg5699 于 2011-8-12 12:35 编辑 ]

都不结贴我郁闷那!
2011-08-12 12:30
快速回复:0和NULL的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022040 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved