#include "stdafx.h"
#include <iostream.h>
class c1
{
public:
c1(int a)
{
cc11=a;
};
private:
int cc11;
};class c2:public c1
{
public:
c2(int a):c1(a){};};int main(int argc, char* argv[])
{
    c1 c1obj(0),c11obj(1);
c2 c2obj(2),c22obj(3);
return 0;
}
在VC++中私有的变量应该不被继承的
那C2类的构造函数还有什么意义啊?删了有提示错误.

解决方案 »

  1.   

    你那不叫继承私有变量,你那叫叫初始化默认构造函数。c1的唯王一构造函数需要一个int 参数,你要构造c2就必须提供这个参数的实参
      

  2.   

    基类只有一个 
    c1(int a)
    {
        cc11=a;
    };
    这样的构造函数 , 只能这样
      

  3.   

    我又写了个程序:
    #include "stdafx.h"
    #include <iostream.h>
    class c1
    {
    public:
    int cc1;
    c1(int a)
    {
    cc11=a;
    cc1=cc11;
    };
    private:
    int cc11;
    };class c2:public c1
    {
    public:
    int cc2;
    c2(int a):c1(a)

    };
    };int main(int argc, char* argv[])
    {   
    c1 c1obj(0);
    c2 c2obj(1);
        cout<<c1obj.cc1<<c2obj.cc1<<endl;
    c1obj=(c1)c2obj;
    cout<<c1obj.cc1<<endl;
    return 0;
    }
    程序输出了:
    01
    1
    我认为基类的私有变量其实也是被复制到C2实例的内存空间中了,只是无法使用而已,大家同意吗?
      

  4.   

    to  fallhunter(不乖)
    什么叫"只是私有的继承后还还是私有"
    在C2中根本无法访问CC11啊.