# Poco

# class RefCountedObject

Library: Foundation
Package: Core
Header: Poco/RefCountedObject.h

## Description

A base class for objects that employ reference counting based garbage collection.

Reference-counted objects inhibit construction by copying and assignment.

## Inheritance

Known Derived Classes: Poco::Crypto::CipherKeyImpl, Poco::Crypto::ECKeyImpl, Poco::ActiveRecord::Context, Poco::ActiveRecord::ActiveRecord, Poco::ActiveRecord::ActiveRecordBase, Poco::Crypto::CipherImpl, Poco::Crypto::Cipher, Poco::ActiveRecord::KeylessActiveRecord, Poco::Crypto::EVPCipherImpl, Poco::Crypto::KeyPairImpl, Poco::Crypto::RSACipherImpl, Poco::Crypto::RSAKeyImpl, Poco::Data::AbstractSessionImpl, Poco::Data::PooledSessionHolder, Poco::Data::PooledSessionImpl, Poco::Data::RowFilter, Poco::Data::SQLChannel::LogNotification, Poco::Data::SQLChannel, Poco::Data::SessionImpl, Poco::Data::SessionPool, ActiveResultHolder, ActiveRunnableBase, ActiveRunnable, AsyncChannel, Poco::AsyncNotificationCenter::ShutdownNotification, Channel, ConsoleChannel, ColorConsoleChannel, EventChannel, EventLogChannel, FastLogger, FileChannel, Formatter, FormattingChannel, JSONFormatter, Logger, Notification, DataNotification, NullChannel, PatternFormatter, ProcessHandleImpl, SimpleFileChannel, SplitterChannel, StreamChannel, SyslogChannel, Task, TaskNotification, TaskStartedNotification, TaskCancelledNotification, TaskFinishedNotification, TaskFailedNotification, TaskProgressNotification, TaskCustomNotification, WindowsConsoleChannel, WindowsColorConsoleChannel, Poco::MongoDB::TopologyChangeNotification, Poco::Net::DatagramSocketImpl, Poco::Net::HTTPServerParams, Poco::Net::ICMPSocketImpl, Poco::Impl::IPAddressImpl, Poco::Impl::IPv4AddressImpl, Poco::Impl::IPv6AddressImpl, Poco::Net::RawSocketImpl, Poco::Net::RemoteSyslogChannel, Poco::Net::RemoteSyslogListener, Poco::Net::SMTPChannel, Poco::Net::ServerSocketImpl, Poco::Impl::SocketAddressImpl, Poco::Impl::IPv4SocketAddressImpl, Poco::Impl::IPv6SocketAddressImpl, Poco::Impl::LocalSocketAddressImpl, Poco::Net::SocketImpl, Poco::Net::ReadableNotification, Poco::Net::SocketNotification, Poco::Net::SocketNotifier, Poco::Net::WritableNotification, Poco::Net::ErrorNotification, Poco::Net::TimeoutNotification, Poco::Net::IdleNotification, Poco::Net::ShutdownNotification, Poco::Net::SocketProactor::IONotification, Poco::Net::StreamSocketImpl, Poco::Net::TCPServerConnectionFilter, Poco::Net::TCPServerParams, Poco::Net::S =, Poco::Net::WebSocketImpl, Poco::Net::Context, Poco::Net::SecureServerSocketImpl, Poco::Net::SecureStreamSocketImpl, Poco::Net::Session, Poco::Redis::RedisNotification, Poco::Redis::RedisConnectNotification, Poco::Redis::RedisDisconnectNotification, Poco::Redis::RedisErrorNotification, Poco::Util::AbstractConfiguration, Poco::Util::Application, Poco::Util::ConfigurationMapper, Poco::Util::AbstractConfigurationView, Poco::Util::ConfigurationView, Poco::Util::FilesystemConfiguration, Poco::Util::IniFileConfiguration, Poco::Util::IntValidator, Poco::Util::JSONConfiguration, Poco::Util::LayeredConfiguration, Poco::Util::LocalConfigurationView, Poco::Util::LoggingSubsystem, Poco::Util::MapConfiguration, Poco::Util::PropertyFileConfiguration, Poco::Util::RegExpValidator, Poco::Util::ServerApplication, Poco::Util::Subsystem, Poco::Util::SystemConfiguration, Poco::Util::TimerTask, Poco::Util::TimerTaskAdapter, Poco::Util::TimerFunc, Poco::Util::Validator, Poco::Util::WinRegistryConfiguration, Poco::Util::XMLConfiguration, Poco::Zip::Add, Poco::Zip::Delete, Poco::Zip::Keep, Poco::Zip::Rename, Poco::Zip::Replace, Poco::Zip::ZipOperation

## Member Summary

Member Functions: duplicate, referenceCount, release

## Constructors

### RefCountedObject

RefCountedObject();

Creates the RefCountedObject. The initial reference count is one.

## Destructor

### ~RefCountedObject

virtual ~RefCountedObject();

Destroys the RefCountedObject.

## Member Functions

### duplicate

void duplicate() const;

Increments the object's reference count.

### referenceCount

int referenceCount() const;

Returns the reference count.

### release

void release() const noexcept;

Decrements the object's reference count and deletes the object if the count reaches zero.