我是C++
的新程序员,我有一些基本问题,我无法通过在线查看。
1)假设我有一个对象,它的成员只是原语。在我的程序中,我使用new创建对象。这个对象析构函数应该是什么?
2)现在假设我有一个名为lst
的列表,它包含一些对象作为上面的对象(只有原始成员)。如果在某些时候我做了以下事情:
lst[i] = new MyObject;
(当lst[i]
已有对象时)。
我应该在此作业之前删除lst[i]
中的对象吗?如果不是真的发生了什么?
这是我的代码的一部分更具体:
class Point {
public:
Point();
~Point();
string toString() const;
void set(long int x, long int y);
Point(long int x, long int y);
long int getX() const;
long int getY() const;
// -----------operators--------------
bool operator==(const Point& point) const;
bool operator!=(const Point& point);
bool operator<(const Point& point);
private:
long int _x;
long int _y;
};
这是我的PointSet类,它包含点列表:
class PointSet
{
public:
PointSet();
PointSet(const PointSet &init);
~PointSet();
string toString() const;
bool add(const Point &point);
bool remove(const Point &point);
int getSize() const;
void setSize(int newSize);
bool operator==(const PointSet& other);
bool operator!=(const PointSet& other);
PointSet& operator-(const PointSet& other) const;
PointSet& operator&(const PointSet& other);
PointSet& operator=(const PointSet& other);
bool isMember(const Point& point) const;
Point* getPointsList();
private:
Point* _allPoints;
int _size;
int _capacity;
};
这是我主要的问题代码:
for(int i = 0; i < listLen; ++i)
{
pointsList[i] = pointsList[i + 1];
}
pointList [0]中的对象会发生什么? (pointsList是Point对象列表)
答案 0 :(得分:0)
与c ++中的C#不同,在声明指向对象的原始指针时,只使用new运算符,例如。
PointSet *mypoint = new PointSet();
如果你能提供帮助,我根本不建议使用原始指针。请改用shared_pointers,因为您不必担心内存泄漏。然后,您可以使用make_shared替换new。