| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 730 人关注过本帖
标题:c++新手,求高手解释一下,组合类问题,脑袋很晕乎
只看楼主 加入收藏
w791487486
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-12
收藏
 问题点数:0 回复次数:6 
c++新手,求高手解释一下,组合类问题,脑袋很晕乎
求高手解释一下
为什么么老是报错说Person类里没有前几个的定义



#include <iostream>
using namespace std;
class Time
{
public:
    Time(int m,int n,int k): i(m),j(n),t(k){}//{m=a,n=b};内嵌对象的初始化
    Time(Time&n);
     ~Time();
private:
    int i,j,t;
};
//inline Time::getM(){cin>>m;}
//inline Time::getN(){cin>>n;}
//inline Time::getK(){cin>>k;}
Time::Time(Time &a):i(a.i),j(a.j),t(a.t)
{
cout<<a.i<<" "<<a.j<<" "<<a.t<<endl;
}
class Person
{
public:
    Person(int Mnm, int ID,Time xp1):x(Mun),z(ID),xp(xp1){}
    {
        cout<<"组合类构造函数实现"<<endl;
    }
    //内嵌对象初始化
    Person(Person&a);
private:
    int x,z,Time xp;   
}
//Person::Person(int Mnm, int ID,Time xp1)


Person::Person(Person &a):x(a.x),z(a.z),xp(a.xp)
{cout<<"组合类复制构造函数已经被引用"<<endl;}
int main()
{
    Time a(1,2,3);
    Person b(1312,Time a,1111);
    Person c(b);
    return 0;
   
}
搜索更多相关主题的帖子: private 
2011-04-13 20:57
w791487486
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-12
收藏
得分:0 
问题到底在哪里呢???求高手指教
2011-04-13 20:58
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
书写有问题,定义函数时做了两对花括号。比如
 Person(int Mnm, int ID,Time xp1):x(Mun),z(ID),xp(xp1){}
    {
        cout<<"组合类构造函数实现"<<endl;
    }
2
 Person b(1312,Time a,1111);
这句也有问题
 Person b(1312,a,1111);
3
还有的函数声明了没有定义,如果不调用还好,一但调用找不到定义也不行。
都是些基础问题,基础不牢,粗心大意造成的,要进步多在这两个地方下功夫。
2011-04-13 21:37
w791487486
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-12
收藏
得分:0 
嗯嗯,谢谢,还想请教一下“还有的函数声明了没有定义,如果不调用还好,一但调用找不到定义也不行”。是哪一个函数啊??这是我改过之后的程序,还是有报错,初学者,望见谅
#include <iostream>
using namespace std;
class Time
{
public:
    Time(int m,int n,int k);//{m=a,n=b};内嵌对象的初始化
    Time(Time&n);
    ~Time(){cout<<"析构函数被调用"<<endl;}
private:
    int i,j,t;
};
Time::Time(int m,int n,int k)
{
    i=m;
    j=n;
    t=k;
    cout<<"Time函数被调用"<<endl;
}
Time::Time(Time &a):i(a.i),j(a.j),t(a.t)
{
cout<<"Time复制构造函数被调用"<<endl;
}
class Person
{
public:
    Person(int Mnm, Time xp1,int ID);
    Person(Person&a);
private:
    int x,z,Time xp;    //这里有报错“missing ';' before identifier 'xp'”是什么意思啊??
}
void Person::Person(int Mnm,Time xp1,int ID, ):x(Mun),xp(xp1),z(ID)
{
    cout<<"Person构造函数被调用"<<endl;
}
 Person::Person(Person &a):x(a.x),xp(a.xp),z(a.z){cout<<"组合类复制构造函数实现"<<endl;}
int main()
{
    Time a(1,2,3);
    Person b(131, a,111);
    Person c(b);
    return 0;
}
2011-04-14 09:34
w791487486
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-12
收藏
得分:0 
多谢,我已经改对了,但还有问题求教,为什么最后运行结果调用了3次Time的析构函数啊???以下是我该队后的程序
#include <iostream>
using namespace std;
class Time
{
public:
    Time(int m,int n,int k);//{m=a,n=b};内嵌对象的初始化
    Time(Time&n);
    //int getM(){return m;}
    //int getN(){return y;}
    //int getK(){return t;}
    ~Time(){cout<<"析构函数被调用"<<endl;}
private:
    int i,j,t;
};
//inline Time::getM(){cin>>m;}
//inline Time::getN(){cin>>n;}
//inline Time::getK(){cin>>k;}
Time::Time(int m,int n,int k)
{
    i=m;
    j=n;
    t=k;
    cout<<"Time函数被调用"<<endl;
}
Time::Time(Time &a):i(a.i),j(a.j),t(a.t)
{
cout<<"Time复制构造函数被调用"<<endl;
}
class Person
{
public:
    Person(int Mun, Time xp1,int ID);//:x(Mun),xp(xp1),z(ID){}//内嵌对象初始化相
    Person(Person&a);
private:
    int x,z;
    Time xp;   
};

Person::Person(int Mun,Time xp1,int ID):x(Mun),xp(xp1),z(ID)
{
    cout<<"Person构造函数被调用"<<endl;
}
Person::Person(Person &a):x(a.x),xp(a.xp),z(a.z){cout<<"组合类复制构造函数实现"<<endl;}
int main()
{
    Time a(1,2,3);
    Person b(131,a,111);
    Person c(b);
    return 0;
}
运行结果::
Time函数被调用
Time复制构造函数被调用
Time复制构造函数被调用
Person构造函数被调用
析构函数被调用
Time复制构造函数被调用
组合类复制构造函数实现
析构函数被调用
析构函数被调用
析构函数被调用
Press any key to continue
2011-04-14 09:52
潜修僧
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2011-4-10
收藏
得分:0 
之所以要调用三次Time的析构函数,因为Time的对象a,以及类Person的对象b,c 均有类Time的对象作为成员,所以总共要析构3次。
2011-04-14 12:01
w791487486
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-12
收藏
得分:0 
哦哦,呵呵呵,我白天上课,晚上回来才能看见,也就是说,Person这些中不管调用几次Time,都只析构一次就完了是吗?
2011-04-14 23:19
快速回复:c++新手,求高手解释一下,组合类问题,脑袋很晕乎
数据加载中...
 
   



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

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