类中类

hihjy 2003-10-17 09:51:50
C++和JAVA中,在类的定义中,能不能有其他类的定义?

请指教,最好有例子说明。
...全文
45 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hotness28 2003-10-19
  • 打赏
  • 举报
回复
java中可以啊
hotness28 2003-10-19
  • 打赏
  • 举报
回复
在java中就很随便你想应该可以就可以
举一个很简单的例子:
class student{};
student stu1;
可以这样写:
student stu2 = stu1;
这是允许的, java可能在你的每一个类中增加在操作符”=“的重载
但是这在c++中是不行的
vcforever 2003-10-19
  • 打赏
  • 举报
回复
类是可以嵌套定义的!
如楼上akiko(弥弥)和wangjinwang(王进)所说!
hotness28 2003-10-19
  • 打赏
  • 举报
回复
把一个类的对象作为另一个类的成员变量是允许的
但是如果是自己的对象,就不行了,要用指针
例如
class teacher
{};
class student1{
private:
teacher myTeacher; //这是允许的,但是teacher必须声明在前面
};
class student2{
private:
student2 thisStudent; //这是不允许的,因为空间分配形成死循环
};
class student3{
private:
student3 *thisStudent; //这是合法的,因为指针空间的分配是确定的
}
hotness28 2003-10-19
  • 打赏
  • 举报
回复
不要误人之弟把,在java 中可以有类的嵌套定义,可是在c++中不是这样]
在c++中类中有两中类型:
数据成员和成员函数
不能有类的嵌套定义,类之间的关系可以是继承,友员
但是嵌套是不允许的,就象在c中函数定义是不可以嵌套的一样
jiajie828 2003-10-19
  • 打赏
  • 举报
回复
能.类中类也有很多好处多.不列举了.JAVA编程思想那本书中讲了许多.
孤必有邻 2003-10-19
  • 打赏
  • 举报
回复
class CA
{
public:
CA();
class CB
{
public:
CB();
int m_b;
};
int m_a;
};
CA::CA()
{
CB cb;
cb.m_b=100;
m_a=cb.m_b*2;
}
CA::CB::CB()
{
m_b=2;
}
...
CA ca;//OK
CB cb;//Bad
0sch 2003-10-19
  • 打赏
  • 举报
回复
有必要么?

用继承不是很好?
tonybaobao 2003-10-18
  • 打赏
  • 举报
回复
可以是可以,但是我没有怎么用过。
一般都是在一个类中,定义另一个类的对象,作为成员变量。
  • 打赏
  • 举报
回复
能,我觉得应该放在外面,更清晰(你的小类是专用的么)

例如时间函数中:年月日是一个类,时分秒是另一个类。
lshadow 2003-10-17
  • 打赏
  • 举报
回复
可以嵌套定义类
akiko 2003-10-17
  • 打赏
  • 举报
回复
class X
{
public:
int m_i;
X():m_i(0){}
class Y
{
public:
int m_j;
Y():m_j(0){}
};
Y y;
};

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧