首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中拇指针变量的定义

2013-09-06 
C++中指针变量的定义本人初选C++,现在有一问题搞不明白如下:class A{int a,bpublic:void test(){A * obj

C++中指针变量的定义
本人初选C++,现在有一问题搞不明白如下:
class A
{
  int a,b;
  public:
  void test()
{
   A * obj = new a();

}
问题:可以这样创建A对象吗?如果不可以为啥? C++ 指针 对象
[解决办法]
 A * obj = new a();
这句话定义了一个类的对象指针,并初始化为一个动态分配的类对象地址,是C++里面的常用方法。
我想你的一个纠结是类尚未定义完全,就在成员函数中使用这个类生成对象,是否难以理解?
回过头想想,既然成员函数可以使用类对象作为返回值,作为函数参数,为什么不能再函数体内定义和使用?
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

本人初选C++,现在有一问题搞不明白如下:
class A
{
  int a,b;
  public:
  void test()
{
   A * obj = new a();

}
问题:可以这样创建A对象吗?如果不可以为啥?

不用再纠结是类尚未定义完全,new a(),无非就是先分配一下内存空间,调用一下构造函数而已....



class Cloneable
{
public:
virtual Cloneable* Clone() =0;
};

class WorkExprerience :public Cloneable{
private:
string workDate;
string company;
public:
Cloneable * Clone()
{
WorkExprerience * obj = new WorkExprerience();
obj->workDate = this->workDate;
obj->company = this->company;
return obj;
}
};

红色部分:我这里用 NEW 对吗?这里是否换可以不用NEW 两个是一个效果吗?这里是一个填空题。

对呀,因为返回的是指针,得用new
[解决办法]
引用:
Quote: 引用:

if you don't use 'new', you can use 'malloc'


class Cloneable
{
public:
virtual Cloneable* Clone() =0;


};

class WorkExprerience :public Cloneable{
private:
string workDate;
string company;
public:
Cloneable * Clone()
{
WorkExprerience * obj = new WorkExprerience();-->错误!!
标准答案:
WorkExprerience * obj;----> 正确!!!!
obj->workDate = this->workDate;
obj->company = this->company;
return obj;
}
};


* Clone()
这不是 虚构造函数吗?,这是设计模式的什么模式来着,唉,忘了!!
当然要WorkExprerience * obj = new WorkExprerience();了
标准答案是错误的,
而且,指针obj没有初始化,就使用,是标准的野指针!!!!
后果很严重。

热点排行