| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 535 人关注过本帖
标题:问个类相关定义的问题,急
只看楼主 加入收藏
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
结帖率:62.07%
收藏
已结贴  问题点数:20 回复次数:4 
问个类相关定义的问题,急
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class heapify
{
public:
    heapify(int n);
    void heapify_init(int *s,int n);
    void heapify_output();
private:
    void heapify_build();
    void heapify_max();
    int *a;
    int n1;
    int n2;
};

heapify::heapify(int n)
{
    a=new int[n];
    n1=n;
}

void heapify::heapify_max(int i)
{
    int left=2*i+1,right=2*i+2,largest,key;
    largest=i;
    if(left<=n2&&*(a+left)>*(a+i))
        largest=left;
    if(right<=n2&&*(a+right)>*(a+largest))
        largest=right;
    if(i!=largest){
        key=*(a+largest);
        *(a+largest)=*(a+i);
        *(a+i)=key;
        heapify::heapify_max(largest);      ----------------------》这个地方进行自我调用 前缀heapify::  可以不可以省略
    }
}

void heapify::heapify_build()
{
    for(i=n2/2;i>=0;i--)
        heapify_max(i);     --------》私有函数调用私有函数 heapify_max也就是上面的一个函数,这个地方要不加上heapify :: 说明
}

void heapify::heapify_init(int *s,int n)
{
    n2=n;
    if(n>n1){
        printf("overflow");
        exit(0);
    }
    for(int i=0;i<n;i++)
        *(a+i)=*(s+i);
    heapify_build();
}

最后一个问题,这个类成员函数的互相调用是否也存在作用域的问题
也就是像C语言一样,如果函数调用另外一个函数,而这个被调用函数是在后面定义的,那么就必须在调用函数内声明被调用函数
是否要有  heapify::这个前缀

搜索更多相关主题的帖子: void private include public 
2013-04-27 12:44
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:20 
1,可以省略
2,不用加
3,不用

PS:你完全搞不懂类,再去看书吧

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-27 12:58
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
回复 2楼 peach5460
新手呀
这是我第一个用C++写 最大堆数据结构操作的程序
以前一直用C在学习东西

能说下原因吗?

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2013-04-27 13:01
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
收藏
得分:0 
回复 2楼 peach5460
我是自学的。
几本教材上 对类 介绍了个框架
还请版主不辞辛苦 解答下

哥,破你无线很难的,不要老是改,少看路由器上的灯,你会死啊
2013-04-27 13:10
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
额...怎么说呢,你写的是什么代码我没看
我就看了一下你的问题...

感觉你根本不知道什么是封装...
程序代码:
heapify::heapify_max(largest);      ----------------------》这个地方进行自我调用 前缀heapify::  可以不可以省略
heapify_max(i);     --------》私有函数调用私有函数 heapify_max也就是上面的一个函数,这个地方要不加上heapify :: 说明
最后一个问题,这个类成员函数的互相调用是否也存在作用域的问题


1,你知不知道为什么封装后需要public,protect,private用来做修饰...
2,你知不知道::这个是干嘛的?
3,你知不知道include在编译期间做了什么

基本上,你弄清楚这三个问题,你的问题就清楚了
第三个问题和c++无关,你说你学过C,应该清楚吧?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-27 15:57
快速回复:问个类相关定义的问题,急
数据加载中...
 
   



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

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