我有一个Element*的std::vector。何时调用析构函数。如果它是Element的向量,它有什么不同
std::vector<Element*> vect;
..
struct Element
{
Record *elm;
Element(Record *rec)
{
elm = new Record();
//...copy from rec
}
~Element()
{
delete elm;
}
};
我使用向量的方法如下:
Element *
In C++我们有值类型(int,long,C++,.)和引用类型(类、结构、.)。值类型、数组和向量的保存实际值;引用类型、数组和向量的只保存对这些对象的引用;因此,当我们将引用类型放入数组和向量时,需要确保这些对象存在足够长的时间(在整个过程中有效),以避免。
我以上的说法是否正确?如果我错了,请纠正我。
我需要一个可以存储从B继承的类( A )的向量。向量位于一个管理应用程序所有流并包含向量Test的类中。
A类
class A {
public:
virtual void test() {
cout << "Class A" << endl;
}
};
B类
class B : public A {
public:
virtual void test() {
cout << "Class B" << endl;
}
};
测试类
class Test
假设我有一个名为vertex的结构,它有一个添加两个顶点的方法:
struct vertex {
float x, y, z;
// constructs the vertex with initial values
vertex(float ix, float iy, float iz);
// returns the value c = this + b
vertex operator+(vertex b);
};
vertex::vertex(float ix, float iy, float iz){
this->x = ix
给定代码 struct A {};
auto obj = new A;
std::vector<unsigned char> buffer;
buffer.resize(sizeof(obj));
std::memcpy(buffer.data(), &obj, sizeof(obj)); // this copies the pointer, not the object!
// ...
auto ptr = *reinterpret_cast<A**>(buffer.data()); // is this UB?
delete ptr; 在这种情况
我已经看了很多在线文章和书籍,但我仍然无法找到答案。代码是::
#include <iostream>
#include <vector>
using namespace std;
class a
{
public :
~a()
{
cout << "destroy";
}
};
int main()
{
vector <a*> *v1 = new vector<a*>;
vector <a> *v2 = new vector<a>;
C++11;
给定A类和B类两类,其中A类存储B类的数据成员,那么它是否更有效;
1:创建B型对象和A型对象,然后将A型对象传递给B型对象;
A storage;
B object(1,2,3);
storage.add(object);
2:创建A类对象,并将其传递给B类型的无名对象,例如;
A storage;
storage.add(B(1,2,3));
这些调用在性能上是否相等?
现在,假设我希望A类型中的一个向量存储传递给A类型的B类型的对象;我是否会对storage.add()每个调用创建两个B类型的副本,而不管是将存储对象传递给已经创建的对象的引用,还是将匿名对象直接传递给A类型