注册 登录
编程论坛 C++教室

请各位帮我看看程序错在哪里

qww 发布于 2013-11-14 23:28, 654 次点击
#include<iostream.h>
class A{
    int x;
    A(int a){x=a;}
public:
    void setA(int y){x=y;}
};
class B:private A{
public:
    B(){cout<<"B"<<endl;}
};
void main()
{
    A a1(2),a2;
    A a3=a2;
    B b;
    b.set(3);
}
8 回复
#2
peach54602013-11-15 08:01
A哪来的默认构造?
#3
i802862013-11-15 10:55
b.set(3)是什么意思?
#4
IT男year2013-11-15 11:11
#include<iostream.h>
class A
{
    int x;
   
public:
    A(){}
    A(int a){x=a;}
    void setA(int y){x=y;}
};
class B:public A
{
public:
     B(){cout<<"B"<<endl;}
};
void main()
{
     A a1(2),a2;
     A a3=a2;
     B b;
     b.setA(3);
}
构造函数只能声明为public。当自己定义了构造函数时,系统就不提供无参构造函数。当需要调用无参构造函数时,就要自己定义啦!小伙子好好学哈!别那么粗心啦!
#5
i802862013-11-15 11:42
回复 4楼 IT男year
直接给代码等于啥都没说
#6
qww2013-11-15 17:04
回复 4楼 IT男year
了解了,谢谢
#7
blueskiner2013-11-15 20:37
回复 4楼 IT男year
谁说构造只能为public公有?哪个人或哪本书教你的?
#8
peach54602013-11-16 07:43
以下是引用blueskiner在2013-11-15 20:37:47的发言:

谁说构造只能为public公有?哪个人或哪本书教你的?

+1
#9
qww2013-11-16 23:33
构造函数通常为public。private和protect也可以
只是用private继承后不能通过类B来访问setA()
多谢提点
1