c++中可在一个类中将另一个类的对象作为私有变量吗

#include<iostream.h>#include<string.h>classpoint{intx,y;public:point(intx1=0,inty1=0)... #include <iostream.h>
#include <string.h>
class point
{
int x,y;
public:
point(int x1=0,int y1=0):x(x1),y(y1)............................................??????
{
cout<<"调用point类对象成员的构造函数!"<<endl;

}
~point()
{
cout<<"调用point类对象成员的析构函数!"<<endl;
}
};
class text
{
char ext[100];
public:
text(char *str)
{
strcpy(ext,str);
cout<<"调用基类text构造函数!"<<endl;
}
~text()
{
cout<<"调用基类text析构函数!"<<endl;
}
};
class circle
{
point center;.....................?????
int radius;
public:
circle(int cx,int cy,int r):center(cx,cy),radius(r)....................?????????????
{
cout<<"调用基类circle的构造函数!"<<endl;
}
~circle()
{
cout<<"调用基类circle的析构函数!"<<endl;
}
};
class circlewithtext:public text,public circle
{
point textposition;.........................??????
public:
circlewithtext(int cx,int cy,int r,char*msg):circle(cx,cy,r),text(msg)................????
{
cout<<"调用派生类circlewithtext的构造函数!"<<endl;
}
~circlewithtext()
{
cout<<"调用派生类circlewithtext的析构函数!"<<endl;
}
};
void main()
{
circlewithtext cm(1,2,3,"Hello");
}
上述这些有????号的地方都看不懂啊,怎么构造函数要这样定义,还有为什么能在别的类中定义point类的对象作为私有变量啊,请哪位大虾支个招讲一讲啊??
展开
 我来答
terranlong
2012-03-16 · TA获得超过7294个赞
知道大有可为答主
回答量:2660
采纳率:0%
帮助的人:4004万
展开全部
#include <iostream>
#include <string.h>
using namespace std;
class point
{
int x,y;
public:
point(int x1=0,int y1=0):x(x1),y(y1)//这个是有参的构造函数,如果没有传入参数,则x1默认是0,y1默认是0,后面的是给成员变量x初始化x1,给y初始化y1
{
cout<<"调用point类对象成员的构造函数!"<<endl;

}
~point()
{
cout<<"调用point类对象成员的析构函数!"<<endl;
}
};
class text
{
char ext[100];
public:
text(char *str)
{
strcpy(ext,str);
cout<<"调用基类text构造函数!"<<endl;
}
~text()
{
cout<<"调用基类text析构函数!"<<endl;
}
};
class circle
{
point center;//肯定可以调用其他类的对象作为成员变量,正如int radius,不也是调用int类型的变量作为成员变量么?
int radius;
public:
circle(int cx,int cy,int r):center(cx,cy),radius(r)//跟point类的构造函数类似
{
cout<<"调用基类circle的构造函数!"<<endl;
}
~circle()
{
cout<<"调用基类circle的析构函数!"<<endl;
}
};
class circlewithtext:public text,public circle
{
point textposition;//同理
public:
circlewithtext(int cx,int cy,int r,char*msg):circle(cx,cy,r),text(msg)//跟point类的构造函数类似
{
cout<<"调用派生类circlewithtext的构造函数!"<<endl;
}
~circlewithtext()
{
cout<<"调用派生类circlewithtext的析构函数!"<<endl;
}
};
void main()
{
circlewithtext cm(1,2,3,"Hello");
}
vinix
2012-03-16 · TA获得超过214个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:287万
展开全部
这个...类当然可以包含其他的类对象啊,复杂的对象都是由简单的对象组合起来的啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
思人思国
2012-03-16 · 超过17用户采纳过TA的回答
知道答主
回答量:85
采纳率:0%
帮助的人:63.1万
展开全部
先解释问号部分:
1、 point(int x1=0,int y1=0):x(x1),y(y1)............................................??????这叫列表初试化,把第一个x()括号内的值付给x,y()括号内的值付给y。
2、circle(int cx,int cy,int r):center(cx,cy),radius(r)....................?????????????这还是列表初始化,但是他调用了center点的构造函数,把相印的参数给附上去。
3、point textposition;.........................??????定义一个点类型的对象。
4、circlewithtext(int cx,int cy,int r,char*msg):circle(cx,cy,r),text(msg)................????还是列表初始化,与2相同。

回答你构造函数定义的问题:构造函数还有其他几种方式定义,但是个人感觉这种比较方便,还有,一般程序习惯把调用父类构造函数写在{}外而把自己新增的属性写在{}内。
为什么能在别的类中定义point类的对象作为私有变量:Piont类与其他的int类用法是一样的,其实int类不也是可以作为私有成员吗,一个类型定义后完全可以看成独立的东西了。你说的私有问题是在类外不能进行调用,比如:如果你的piont类中的xy是私有的话,那么你就不能在point对象piont1中这样用,point1.x,这样是没有权限的。而point1是可以用的,他是一个整体,是point类的一个实例对象。

希望对你有用。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式