注册 登录
编程论坛 C++教室

关于C++的简单问题,各位大侠帮忙啊。。。

我是菜鸟C 发布于 2011-03-31 23:18, 771 次点击
#include <iostream>
using namespace std;
class myclass
{
private:
    int value;
   
public:
    myclass(int a) {value=a;}
    int max() {return x>y?x:y;}
    int max(int x,int y,int z=0)
    {
        if(x>y)
            return x>z?x:z;
        else
            return y>z?y:z;
    }
    ~myclass(int a)
    {
        value=0;
    }

};

void main()
{
    myclass my;
    my.max(10,20);
   
}
这个代码哪里有错。。。??
5 回复
#2
wu_qingzhou2011-03-31 23:40
#include <iostream>
using namespace std;
class myclass
{
private:
    int value;
   
public:
//    myclass(int a) {value=a;}
    myclass(int a=0) {value=a;}
//  int max() {return x>y?x:y;}  //我觉得这里也有问题吧,x和y都没有定义,就先使用了,这不是不允许的吗?
    int max(int x,int y,int z=0)
    {
        if(x>y)
            return x>z?x:z;
        else
            return y>z?y:z;
    }
    ~myclass(/*int a*/)      // 我想问一下,你在这里弄一个形参a是为了什么?
    {
        value=0;
    }

};

void main()
{
   
    myclass my;     // 因为你的构造函数有参数,而且不可缺省,所以不能这样申明my。应该这样myclass my(1);如果你要坚持这样的话,你可以把上面的
                    // myclass(int a) {value=a;}改成myclass(int a=0) {value=a;}
   
//  my.max(10,20);
    cout<<my.max(10,20)<<endl;
   
}
#3
我是菜鸟C2011-03-31 23:59
回复 2楼 wu_qingzhou
这是书上一个题目的代码。
我也试过好多次好多地方,,但是就是调试不出来。
你说的那些我也想过,但是就是调试不出。
我觉得是max定义的地方出了问题。
#4
lintaoyn2011-04-01 08:15
用的什么编译器?没给你指出是哪一行出的什么错么?
#5
木头lbj2011-04-01 09:11
程序代码:
#include <iostream>
using namespace std;
class myclass
{
private:
    int value;
    int x,y;//x,y要定义
    int a;
   
public:

    myclass(/*int a*/) {value=a;}//构造函数。我不明白你定义参数a是做什么用的
    int max() {return x>y?x:y;}
    int max(int x,int y)
    {
            int z=0;
        if(x>y)
            return x>z?x:z;
        else
            return y>z?y:z;
    }
    ~myclass(/*int a*/)//析构函数不允许带参数
    {
        value=0;
    }

};

void main()
{
    myclass my;
    cout<<my.max(10,20) << endl;//没有输出看不见打印结果
   
}
我不明白你是想要实现什么。这是我改的。通过编译,也输出了y即20
#6
hellovfp2011-04-01 12:24
神奇的程序,呵呵,大家都不知道你是如何调试的,为什么别人都可以调试出来就你调试不出来呢?
能解释一下你的调试过程吗?
1