Sponsored Content
Top Forums Programming About uncopyable class (on book:Effective C++) Post 302738345 by vistastar on Saturday 1st of December 2012 05:20:13 AM
Old 12-01-2012
About uncopyable class (on book:Effective C++)

See the following code:
Code:
#include<iostream>
using namespace std;
class Uncopyable
{
protected:
    Uncopyable(){cout<<"hehe\n";}
    ~Uncopyable(){}
private:
    Uncopyable(const Uncopyable &rhs){cout<<"oooops\n";};
    Uncopyable& operator=(const Uncopyable &rhs);
};

class Dog : private Uncopyable
{
    string name;
    int value;
public:

    Dog(const string &s, const int &v):name(s), value(v){}
public:
    //Dog(const Dog &rhs){};             //here is the question!
};

int main()
{
    Dog a("a", 9);
    Dog b(a);
}

If I comment out that line, g++ will complaint "Uncopyable::Uncopyable(const Uncopyable&) is private". I think that mean the default copy ctor of derived class created by g++ called the base class' copy ctor.


If I make available of that line, every thing is ok. It out put
Code:
hehe
hehe

I think this mean the default copy ctor of derived class created by g++ called the base class' default ctor.
Am I right? If yes, why doesn't the default copy ctor derived class, in condition 2, call the base class' copy ctor? Why it behave so inconsistently?

thank you!

Last edited by vistastar; 12-01-2012 at 06:31 AM..
 

9 More Discussions You Might Find Interesting

1. Cybersecurity

Changing effective user

I would like to give execution rights for a script to one user. (that's the easy part...) When that user is running the script, I would like the effective user ID to be that of the file-owner. Is this possible? (6 Replies)
Discussion started by: hilmel
6 Replies

2. UNIX for Dummies Questions & Answers

most effective search ?

what's the most efficient and effective search for a file in a dir ? I see many guys use this # find - print or something as such ? and sometimes pipe it to something else ? Is there a better way of using "grep" in all of this ? thanks simon2000 (3 Replies)
Discussion started by: simon2000
3 Replies

3. UNIX for Dummies Questions & Answers

car class (not school class)

im just trying to have some fun and kill some time writing a c++ program that has a person type in a car make and model then gives them a year and a price. or something like that. i always have problems getting it goin but once the ball is rolling im usually pretty good. anyone wanna help me out? ... (1 Reply)
Discussion started by: rickym2626
1 Replies

4. Programming

C++ class definition with a member of the same class

Hi, i have a question about C++. Is it possible to declare a class with a member ot the same class? For example, a linked list or i want to convert this C code to C++ class (Elemento) typedef struct elemento { char name; char value; List<struct elemento> ltElementos; ... (7 Replies)
Discussion started by: pogdorica
7 Replies

5. UNIX for Dummies Questions & Answers

Real and Effective IDs

Can anyone explain me in details of Real and Effective IDs (6 Replies)
Discussion started by: kkalyan
6 Replies

6. Programming

static use for class inside the same class c++

Hi, I believe the next code is wrong: class Egg { Egg e; int i; Egg(int ii=0) : i(ii) {} }; because you would end up with an endless definition (memory allocation) of Egg objects, thus int i. Ok, so God Eckel proposes for a singleton: class Egg { static Egg e; int... (5 Replies)
Discussion started by: xavipoes
5 Replies

7. UNIX for Advanced & Expert Users

Get pointer for existing device class (struct class) in Linux kernel module

Hi all! I am trying to register a device in an existing device class, but I am having trouble getting the pointer to an existing class. I can create a class in a module, get the pointer to it and then use it to register the device with: *cl = class_create(THIS_MODULE, className);... (0 Replies)
Discussion started by: hdaniel@ualg.pt
0 Replies

8. Programming

Size of Derived class, upon virtual base class inheritance

I have the two class definition as follows. class A { public: int a; }; class B : virtual public A{ }; The size of class A is shown as 4, and size of class B is shown as 16. Why is this effect ?. (2 Replies)
Discussion started by: techmonk
2 Replies

9. Programming

C++ : Base class member function not accessible from derived class

Hello All, I am a learner in C++. I was testing my inheritance knowledge with following piece of code. #include <iostream> using namespace std; class base { public : void display() { cout << "In base display()" << endl; } void display(int k) {... (2 Replies)
Discussion started by: anand.shah
2 Replies
FBB::RandBuffer(3bobcat)				      random number streambuf					  FBB::RandBuffer(3bobcat)

NAME
FBB::RandBuffer - std::streambuf generating random numbers SYNOPSIS
#include <bobcat/randbuffer> Linking option: -lbobcat DESCRIPTION
FBB:RandBuffer objects may be used as a std::streambuf of std::istream objects to allow the extraction of random numbers from the stream. NAMESPACE
FBB All constructors, members, operators and manipulators, mentioned in this man-page, are defined in the namespace FBB. INHERITS FROM
std::streambuf CONSTRUCTOR
o Randbuffer(int min, int max, size_t seed = 1): This Randbuffer() constructor initializes the random generator. The seed is used to initialze the random number generator.Random values between min and max (inclusive) are returned. VIRTUAL MEMBERS
o int underflow(): This function is called by std::istream objects using Randbuffer. It produces the next available random number, separating the ran- dom numbers by one blanks space. Random values between min and max (inclusive) are returned (see the description of the construc- tor). INHERITED MEMBERS
Since the class uses public derivation from std::streambuf, all members of this class can be used. EXAMPLE
#include <iostream> #include <istream> #include <bobcat/randbuffer> #include <bobcat/a2x> using namespace std; using namespace FBB; int main(int argc, char **argv) { if (argc == 1) { cout << "expect: nruns min max seed "; return 1; } Randbuffer rb(A2x(argv[2]), A2x(argv[3]), A2x(argv[4]).to<size_t>()); istream istr(&rb); for (int idx = A2x(argv[1]); idx--; ) { int c; if (!(istr >> c)) { cout << "extraction failed "; break; } cout << "next: " << c << endl; } int count = 0; while (istr.unget()) count++; cout << "number of successful unget()-calls: " << count << endl; istr.clear(); istr >> count; cout << "and read: " << count << endl; return 0; } FILES
bobcat/randbuffer - defines the class interface SEE ALSO
bobcat(7), irandstream(3bobcat), rand(3), srand(3), std::streambuf BUGS
None Reported. DISTRIBUTION FILES
o bobcat_3.01.00-x.dsc: detached signature; o bobcat_3.01.00-x.tar.gz: source archive; o bobcat_3.01.00-x_i386.changes: change log; o libbobcat1_3.01.00-x_*.deb: debian package holding the libraries; o libbobcat1-dev_3.01.00-x_*.deb: debian package holding the libraries, headers and manual pages; o http://sourceforge.net/projects/bobcat: public archive location; BOBCAT
Bobcat is an acronym of `Brokken's Own Base Classes And Templates'. COPYRIGHT
This is free software, distributed under the terms of the GNU General Public License (GPL). AUTHOR
Frank B. Brokken (f.b.brokken@rug.nl). libbobcat1-dev_3.01.00-x.tar.gz 2005-2012 FBB::RandBuffer(3bobcat)
All times are GMT -4. The time now is 12:40 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy