class a : b默认是什么派生?

belief888 2002-04-08 01:32:20
class a : b默认是什么派生?谢谢。我想可能是全局吧?你们说呢?谁有书查?
...全文
135 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ashchan 2002-04-08
  • 打赏
  • 举报
回复
private, 见The C++ Programming Language pg405,摘录如下:
The access specifier for a base class can be left out. In that case, the base defaults to a private base for a class and a public base for a struct.
ljan 2002-04-08
  • 打赏
  • 举报
回复
agree viper()

对于类,默认是private, 对于struct,
默认是public, 我想应该源于C,

class a
{
public:
int i;
void fun(){}
};

class b : a
{
public:

};

class c : public b
{
public:
void f()
{
i = 10;
}

};
error C2247: 'i' not accessible because 'b' uses 'private' to inherit from 'a'
loader 2002-04-08
  • 打赏
  • 举报
回复
当然是private
belief888 2002-04-08
  • 打赏
  • 举报
回复
服了。。。怎么说什么的都有呢?其实我认为应该是PUBLIC,不过有本书上写着是私有的。
招RD和QA 2002-04-08
  • 打赏
  • 举报
回复
class a;

class b : a
{
};

相当于
class b : private a
{
};

struct b : a
{
};

相当于
struct b : public a
{
};
cwanter 2002-04-08
  • 打赏
  • 举报
回复
唉,再看看书吧
reven_zl 2002-04-08
  • 打赏
  • 举报
回复
默认是public,如果是private的话,子类的子类不是看不到基类中的任何东西了吗
cstpjl 2002-04-08
  • 打赏
  • 举报
回复
应该是PRIVATE
LionEagle 2002-04-08
  • 打赏
  • 举报
回复
不好意思,写错了,应该是

是private

class A
{
public:
int x;
A(){ x = 2; }
};

class B : A
{
};

void main()
{
B x;

x.x = 5; // 编译出错
}


LionEagle 2002-04-08
  • 打赏
  • 举报
回复
是private

class A
{
public:
int x;
A(){ x = 2; }
};

class B : public A
{
};

void main()
{
B x;

x.x = 5; // 编译出错
}
cwanter 2002-04-08
  • 打赏
  • 举报
回复
应该是private.
poly30 2002-04-08
  • 打赏
  • 举报
回复


public
fangrk 2002-04-08
  • 打赏
  • 举报
回复
我记得默认的继承是private
hx 2002-04-08
  • 打赏
  • 举报
回复
我有一本,是C++教程,清大的。
pyl2001 2002-04-08
  • 打赏
  • 举报
回复
默认public

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧