Coding
C++ Internals

Smart Pointer From Scratch

Premium
Difficulty

Asked at Headlands Technologies

Theory: C++ Internals

Read the problem, hints and solution here. The editor needs a bigger screen: open this page on a laptop to write and run your code.

"xxxxxxxxx xxxxxx_xxx" xx xxx xxxx-xxxxx x++ xxxxxx xxxxxxxx xx xxxxx-xxx xxxxxxxxxx, xxx xxx x xxxxxx: xx xxxxxx xxxxxxx xx xxxxxxx xxxxxxx xxx xxxxxxxxxx xxxxxxxxx, xxx xxxx xx xxxx, xxxxxxxx, xxx xxxxx xxx xxxxxxxxx xxxxx xxxxxxxx xxxxx. xxxxx xx xx xx x xxxxxxxx xxxx xxxx xx.

xxxxxxxxx xxxxxxxxx<x>, x xxxxxxxxx-xxxxxxx xxxxxx xxxxxxx. xxxxx xxx::xxxxxx_xxx xx xxx::xxxxxx_xxx xxxxxxxx xxxxxx xx xxxxxx; xxx xxxxxxx xxxxx xx xxx xxxxxxxx.

  • xxxxxxxxx(): xxxxx; xxx_xxxxx() == x, xxxxxxxx xxxx xxxxx.
  • xxxxxxxx xxxxxxxxx(x* xxx): xxxxx xxxxxxxxx xx xxx xxxx x xxxxx xx x. x xxxx xxx xxxxxxxx xx xxxxx xxxxxxxxx (xx xxxxxxx xxxxx).
  • xxxx xxxxxxxxxxx / xxxx xxxxxxxxxx: xxxxx xxxxxxxxx; xxx xxxxx xxxx xx xx xxx. xxxx xxxxxxxxxx xxxx xxxxxxx xxxx-xxxxxxxxxx (x = x) xxxxxxx xxxxxxxx xxx xxxxx xx xxxxxxxxxx xxxxxxxx.
  • xxxx xxxxxxxxxxx / xxxx xxxxxxxxxx: xxxxx xxxxxxxxx; xxx xxxxxx xx xxxx xxxxx. xx xxxxx xxxxxx.
  • xxxxxxxxxx xxxx xx xxxxxxxx xxxxxx xxxxx xxxxxxxx xxx xxxxxx'x xxxxxxx xxxxxxxxx (xxxxxxxxxx xxx xxxxxx xx xx xxx xxx xxxx).
  • ~xxxxxxxxx(): xxxxxxxx xxx xxxxxxxxx; xxxxxxx xxxxx xxx xxxxx xx xxxx xxxxxxx xxx xxxxxx xxx xxx xxxxxxx xxxxx, xxxxxxx xxxx.
  • xxxx xxxxx(x* xxx = xxxxxxx): xxxxxxxx xxx xxxxxxx xxxxxxxxx, xxxx xxxx xxx xxxxx (xxxxx x) xx xxxxxxx xxxxx.
  • xxxx xxxx xxx_xxxxx() xxxxx: xxxxxxx xxxxx xxxxx; x xxxx xxxxx.
  • x& xxxxxxxx*() xxxxx, x* xxxxxxxx->() xxxxx, xxxxxxxx xxxxxxxx xxxx() xxxxx (xxxxxxxx xx xxx xxxxxxxx).

xxx xxxxxxxx xxxx xxxxxxxx xxxxxxxxxxxx, xx xxxxxxxxxxxx xxxxxxx xxxx xxxxxx xxxxxxxxxxx / xxxxxxxxx xxxxxxxx (xx xxx xxxxxx xx). xxx xxxxx xxxxx xxxxxxx xxxxxx, xxxx xxxx xxxx xx xxxxxxxxx xxxxxx, xxx xxxxx xxx xxxxxxxx: xxx xxxxxx xxxx xx xxxxxxxxx xxxxxxx xxxx, xxxxxxxxx xxxx xxx xxxx xxxxx xxxx xx, xxxxx xxxxxxx.

xxxxxxxx

[]{ xxxxxxxxxxxx::xxxxx(); xxx::xxxxxx<xxxx xxxx> xxx; { xxxxxxxxx<xxxxxxxxxxxx> x(xxx xxxxxxxxxxxx(x)); xxx.xxxx_xxxx(x->xxxxx); xxx.xxxx_xxxx(x.xxx_xxxxx()); xxx.xxxx_xxxx(xxxxxxxxxxxx::xxxxxxxxx); } xxx.xxxx_xxxx(xxxxxxxxxxxx::xxxxxxxxxxx); xxx.xxxx_xxxx(xxxxxxxxxxxx::xxxxxxxxx); xxxxxx xxx; }()
// [x, x, x, x, x]  (xxxxx xxxxxx xxx xxxxx, xxxxxxxxx xxxx xx xxxx)

[]{ xxxxxxxxxxxx::xxxxx(); xxx::xxxxxx<xxxx xxxx> xxx; { xxxxxxxxx<xxxxxxxxxxxx> x(xxx xxxxxxxxxxxx(x)); { xxxxxxxxx<xxxxxxxxxxxx> x(x); xxxxxxxxx<xxxxxxxxxxxx> x = x; xxx.xxxx_xxxx(x.xxx_xxxxx()); xxx.xxxx_xxxx(x->xxxxx); } xxx.xxxx_xxxx(x.xxx_xxxxx()); xxx.xxxx_xxxx(xxxxxxxxxxxx::xxxxxxxxx); } xxx.xxxx_xxxx(xxxxxxxxxxxx::xxxxxxxxx); xxxxxx xxx; }()
// [x, x, x, x, x]  (xxxxx xxxxxx; xxxxx xxxxxx xxxxxxx xxxx xxx xxxxxxx)

xxxxxxxxxxx

  • xxxxxx-xxxxxxxx: x xxxxx xxxxxxx xxxxx xx xxxxxxx xxxx (xxx xxxxxxxxx xxxxxx xxxx xxxxxxx xxxxx xxxxxx).
  • xx xxxxxxxxx xxxxxx xxxxxxxx: xxx/xxxxxx xxx xxx xxxxxx xxx xxx xxxxxxx xxxxx xxx xxxx.
  • xxx xxxxxx xxxxx xxxxx xxxx-xxxxxxxxxx, xxxx-xxxx-xxxxxxxx xxxxxxxx xxxxxxx xxxxx, xxxxx-xxxx xxxxx, xxx xxxxx xxxxxx xxxxxxxx xx xxxxxxxxx xxxxx. xxxxx xxxx xxxx xxxxx x xxxxxxxxx xxxx xx xxxxxxxx-xxxx: xxxxx xxxx xxxxx x = x xxxx xxxx xxxxx xxx xxxx xxxxxx.

This problem is only available to subscribers.

Language: C++SharedPtr
Sample tests

Unlock the problem to run it against the tests.