| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 381 人关注过本帖
标题:关于构造函数的问题
只看楼主 加入收藏
gao_guai
Rank: 2
等 级:论坛游民
帖 子:73
专家分:16
注 册:2011-6-5
收藏
 问题点数:0 回复次数:2 
关于构造函数的问题
程序代码:
#include <iostream> 
#include <string> 
using namespace std;   
class Teacher 
{ 
    public: 
    Teacher() 
    { 
        director = new char[10]; 
    } 

 
    char *show();  

    protected: 
    char *director; 
    //string *director; 
}; 
char *Teacher::show() 
{ 
    return director; 
} 
class Student 
{ 
    public: 
    Student() 
    { 
        number = 1; 
        score = 100; 
    } 
    void show(); 

 
    protected: 
    int number; 
    int score; 
    Teacher teacher; 

 
}; 

 
void Student::show() 
{ 
    cout<<teacher.show()<<endl<<number<<endl<<score<<endl; 
} 
void main() 
{ 
    Student a; 
    a.show(); 
    Student b[5]; 
    for(int i=0; i<sizeof(b)/sizeof(Student); i++) 
    { 
        b[i].show(); 
    } 
    cin.get(); 
}
teacher构造函数里面director应该是指向一个内存的首地址,为什么show()函数返回的不是地址呢,
搜索更多相关主题的帖子: director 
2012-07-05 10:23
清微御宇
Rank: 6Rank: 6
来 自:开封
等 级:侠之大者
威 望:2
帖 子:318
专家分:497
注 册:2012-1-15
收藏
得分:0 
两个show()属于不同的类,功能可以不同啊!

Stay hungry , Stay foolish!
2012-07-05 11:07
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:0 
director本身就是分配内存地址。如果你想打印这个地址,可以这么干:

class Teacher
{
    public:
    Teacher()
    {
        director = new char[100];
    }

    ~Teacher() //don't forget free memory of array ;
    {
        delete [] director;
    }
    char **show();

    protected:
    char *director;
    //string *director;
};
char **Teacher::show()
{
    return &director;
}

然后修改Student::show方法。
void Student::show()
{
    cout<< hex << teacher.show() <<endl << dec <<number<<endl<<score<<endl;
}

打印出来的就是地址值。

我们都在路上。。。。。
2012-07-05 11:33
快速回复:关于构造函数的问题
数据加载中...
 
   



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

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