创建一个指向包含字符串的新类的指针

时间:2016-08-13 09:29:41

标签: c++ armadillo pimpl-idiom

我认为new或智能指针需要内存大小。如果一个类包含字符串,我会分配该类。然后我为字符串分配一个新值,它是在内存上吗?

// a.hpp
#include <string>
#include <memory>
#include <armadillo>

class A {
public:
  A(const std::string &);
private:
  struct Impl;
  std::shared_ptr<Impl> impl;
};

// a.cc
struct A::Impl {
  Impl(const std::string &f)
  {
    // read config file and get name and size of x
    name = "abc";
    x.zeros(2, 3);
  }

  std::string name;
  arma::mat x;
};

A::A(const std::string &f):
  impl(std::make_shared<Impl>(f)) {}

对于这个例子,我想我只分配N内存,但我使用N+M内存。这很危险吗?

1 个答案:

答案 0 :(得分:1)

std::string的赋值运算符将处理所有必需的内存分配。你不必担心这一点。