|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ private继承的时候,能否再用using来声明基类中的成员?
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1543
人关注过本帖
标题:
private继承的时候,能否再用using来声明基类中的成员?
只看楼主
加入收藏
newyj
等 级:
新手上路
威 望:
3
帖 子:542
专家分:0
注 册:2008-1-4
楼主
收藏
问题点数:0 回复次数:10
private继承的时候,能否再用using来声明基类中的成员?
private继承的时候,能否再用using来声明基类中的成员?
搜索更多相关主题的帖子:
using
private
基类
声明
成员
2008-04-28 17:22
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
2
楼
收藏
得分:0
你贴代码吧.一起讨论
学习需要安静。。海盗要重新来过。。
2008-04-28 17:23
举报帖子
使用道具
赠送鲜花
newyj
等 级:
新手上路
威 望:
3
帖 子:542
专家分:0
注 册:2008-1-4
第
3
楼
收藏
得分:0
这个是Effective 中的一段代码
我只是把继承中的public换成了private
class Base{
private:
int x;
public:
virtual void mf1()=0;
virtual void mf2(int);
virtual void mf2();
void mf3();
void mf3(double);
};
class Derived: private Base{
public:
using Base::mf1;
using Base::mf3;
virtual void mf1();
void mf3();
void mf4();
}
这里的using Base::mf1;using Base::mf3;是否还能起到预期的作用
2008-04-28 17:36
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
4
楼
收藏
得分:0
好像不可以...类型转化错误
#include<iostream>
using namespace std;
class Base{
private:
int x;
public:
virtual void mf1()=0;
//virtual void mf2(int);
//virtual void mf2();
void mf3();
void mf3(double);
};
void Base::mf1()
{
cout<<"Base"<<endl;
};
class Derived: private Base{
public:
using Base::mf1;
using Base::mf3;
void mf1();
void mf3();
void mf4();
};
void Derived::mf1()
{
cout<<"Derived"<<endl;
}
int main()
{
Derived a;
Base &b=a;
b.mf1();
return 0;
}
其实你不用using的话..派生类也是可以看见的
学习需要安静。。海盗要重新来过。。
2008-04-28 18:12
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
5
楼
收藏
得分:0
如果只是讨论可见,确实是可见的
#include<iostream>
using namespace std;
class Base{
private:
int x;
public:
virtual void mf1()=0;
//virtual void mf2(int);
virtual void mf2();
void mf3();
void mf3(double);
};
void Base::mf2()
{
cout<<"Base"<<endl;
};
class Derived: private Base{
public:
using Base::mf1;
using Base::mf2;
void mf1();
void mf3();
void mf4();
};
void Derived::mf1()
{
cout<<"Derived"<<endl;
mf2();
};
int main()
{
Derived a;
a.mf1();
return 0;
}
学习需要安静。。海盗要重新来过。。
2008-04-28 18:26
举报帖子
使用道具
赠送鲜花
sunkaidong
来 自:南京师范大学
等 级:
贵宾
威 望:
12
帖 子:4496
专家分:141
注 册:2006-12-28
第
6
楼
收藏
得分:0
这个东西就是在绕逻辑....像java里面的接口默认公有..一般实现多态都需要公有继承..和虚函数公有...看一点基础的书..高级得太困难...呵呵,一起进步...
[[it] 本帖最后由 sunkaidong 于 2008-4-28 18:56 编辑 [/it]]
学习需要安静。。海盗要重新来过。。
2008-04-28 18:37
举报帖子
使用道具
赠送鲜花
中学者
等 级:
版主
威 望:
20
帖 子:3554
专家分:80
注 册:2007-9-14
第
7
楼
收藏
得分:0
[bo]以下是引用 [un]newyj[/un] 在 2008-4-28 17:36 的发言:[/bo]
这个是Effective 中的一段代码
我只是把继承中的public换成了private
class Base{
private:
int x;
public:
virtual void mf1()=0;
virtual void mf2(int);
virtual void mf2();
void mf3() ...
完全没效果嘛,你派生类已经存在这些接口了///
樱花大战, 有爱.
2008-04-28 20:26
举报帖子
使用道具
赠送鲜花
中学者
等 级:
版主
威 望:
20
帖 子:3554
专家分:80
注 册:2007-9-14
第
8
楼
收藏
得分:0
除非你派生类的接口没有定义,这样就相当于多次声明了/
樱花大战, 有爱.
2008-04-28 20:27
举报帖子
使用道具
赠送鲜花
中学者
等 级:
版主
威 望:
20
帖 子:3554
专家分:80
注 册:2007-9-14
第
9
楼
收藏
得分:0
我错了,,,有点繁琐,不讨论了/
樱花大战, 有爱.
2008-04-28 20:32
举报帖子
使用道具
赠送鲜花
newyj
等 级:
新手上路
威 望:
3
帖 子:542
专家分:0
注 册:2008-1-4
第
10
楼
收藏
得分:0
谢谢楼上两位的回答
using Base::mf1;是声明基类中mf3()和mf3(double)这两个函数吗?
是告诉 派生类 只要是基类中函数名为mf3的都可以调用吗
2008-04-28 20:39
举报帖子
使用道具
赠送鲜花
11
1/2页
1
2
快速回复:
private继承的时候,能否再用using来声明基类中的成员?
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.038015 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved