Chinaunix

标题: java和C++中类的不同声明方式 [打印本页]

作者: tongyizhu    时间: 2005-12-08 19:52
标题: java和C++中类的不同声明方式
小弟最近同时学java和c++,有点疑问请教大家!!
首先大家看两段程序(很基本,但是我有疑问):
#include <stdio.h>
#include <iostream.h>
class mytest{
public:
mytest()
{
printf("test\n");
}
};
void main()
{
       
        mytest test1,*hi;hi=&test1;
//        cout<<test1;错误使用
        cout<<&test1;cout<<hi;

}


public class test1{
public static void main(String args[])
{
        test1 test1=new test1();
        System.out.println(test1);//问题,怎么样才能输出他的地址呢。还有,到底C++中的类定义
                                  //与java中的有什么不同。类名的含义有什么不同????
}
test1()
{
System.out.println("test");
}
}

我的问题就是java中定义一个类变量后,这个类变量到底代表什么?相当于一个指针吗?c++中定义一个类变量后,不用new就可以生成一个类对象,这于java中的实现机制有什么不同,他又代表一个什么东西呢?也许问题很弱智,还是大家希望能给我一点意见!
作者: knight-yl    时间: 2005-12-08 20:28
java也一样,
作者: tongyizhu    时间: 2005-12-08 23:25
标题: 回复 2楼 knight-yl 的帖子
能不能详细说一下,什么也一样啊?
作者: 大隐无名    时间: 2005-12-09 07:40
Java中不允许直接进行内存操作。所以没有指针操作。没有取地址的操作。
作者: zw_ren    时间: 2005-12-09 09:50
Java中声明一个类对象,也就相当于C++里的一个指针变量,当用new真正从堆里实例化它的时候,才有了C++意义上的对象。C++中的对象在声明时就已经在栈里实例化了。而Java为了让虚拟机管理内存的回收,所以类的引用分配在栈中,对象分配在堆中。
作者: tongyizhu    时间: 2005-12-09 11:00
标题: 回复 5楼 zw_ren 的帖子
zw_ren大哥说得很有道理,谢谢你如此精妙的回答!!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2