在c++中如何像java一样设置初始化对象等于null
大侠,我希望判断一个类的成员数据(一个类的对象)是否被初始化了,在C++中如何做啊?在java中可以定义成员数据时候给他赋值null,如下:Objectobj=null;...
大侠,我希望判断一个类的成员数据(一个类的对象)是否被初始化了,在C++中如何做啊?
在java中可以 定义成员数据时候 给他赋值 null,如下:
Object obj = null;
然后在使用的时候:
if(obj==null)
{
}
但是在c++中该如何定义啊,谢谢解答
我明白 catm3 大侠的意思
关键是我不希望用指针
我希望用像JAVA一样用null初始化对象,然后,在再其他地方用
if(obj==null)
{
}
来判断在此之前有无对此对象的赋值操作,望大侠解答,谢谢 展开
在java中可以 定义成员数据时候 给他赋值 null,如下:
Object obj = null;
然后在使用的时候:
if(obj==null)
{
}
但是在c++中该如何定义啊,谢谢解答
我明白 catm3 大侠的意思
关键是我不希望用指针
我希望用像JAVA一样用null初始化对象,然后,在再其他地方用
if(obj==null)
{
}
来判断在此之前有无对此对象的赋值操作,望大侠解答,谢谢 展开
展开全部
如果你不想使用指针,那么很抱歉,跟java引用变量相关的类型在c++中是不存在的;
c++中引用的概念跟java中的不一样,c++中的引用必须绑定到一个实际存在的对象,不能绑定到NULL;
c++中 Object &obj=NULL;这样的句子是绝对违法的
Object &obj=*(new Object());这样的句子,或许可以编译通过,但是这是非常危险地,因为后面很容易忘记释放这个对象。
string &str=string("123")+"456";这样的句子,VC中打开扩展可以编译通过,但是c++规范是不允许的,因为这同样非常危险。str绑定到了临时对象。
以上是c++引用不同之处的小小例子,实际上还有更多不同,我也不多说了,要自己学
c++中的指针跟java中的引用类似;
Object obj = null; java中的意思是定义Object型引用的变量obj并初始化为null
Object *obj=NULL;c++中的意思为定Object型指针的变量obj并初始化为NULL
很像吧
你明显C++基础一点也没有,看看C++的最基本的入门书吧,你有java基础,学起来不难
c++中引用的概念跟java中的不一样,c++中的引用必须绑定到一个实际存在的对象,不能绑定到NULL;
c++中 Object &obj=NULL;这样的句子是绝对违法的
Object &obj=*(new Object());这样的句子,或许可以编译通过,但是这是非常危险地,因为后面很容易忘记释放这个对象。
string &str=string("123")+"456";这样的句子,VC中打开扩展可以编译通过,但是c++规范是不允许的,因为这同样非常危险。str绑定到了临时对象。
以上是c++引用不同之处的小小例子,实际上还有更多不同,我也不多说了,要自己学
c++中的指针跟java中的引用类似;
Object obj = null; java中的意思是定义Object型引用的变量obj并初始化为null
Object *obj=NULL;c++中的意思为定Object型指针的变量obj并初始化为NULL
很像吧
你明显C++基础一点也没有,看看C++的最基本的入门书吧,你有java基础,学起来不难
展开全部
要声明为指针才可设置为NULL, 如 A* pa = NULL;
C++不同JAVA 直接 A a; 就已经创建对象。不需要new, 只是指针时才需要new
A* pa = new A(); 这样最后要 delete pa;释放掉
C++不同JAVA 直接 A a; 就已经创建对象。不需要new, 只是指针时才需要new
A* pa = new A(); 这样最后要 delete pa;释放掉
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++里没有这个概念 你可以声明一个全局或是静态变量 然后重载==运算符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用指针判断!
Object * object=new Object();
object->destroy();
Object * object=new Object();
object->destroy();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c++确实不能将对象初始化为null,但是类似的功能并非无法实现,比如可以利用c++中的vector容器,例如:
vector<Object> obj;
最开始,这个容器默认是空的。
如果要初始化,那么就新建一个Object对象newObj,然后设置好对象的属性之后
obj.push_back(newObj);
这样就可以利用容器是否为空来判断有没有进行初始化了。
在使用的时候:
if(obj.size()==0)
{
}
即可。
vector<Object> obj;
最开始,这个容器默认是空的。
如果要初始化,那么就新建一个Object对象newObj,然后设置好对象的属性之后
obj.push_back(newObj);
这样就可以利用容器是否为空来判断有没有进行初始化了。
在使用的时候:
if(obj.size()==0)
{
}
即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询