免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3115 | 回复: 4
打印 上一主题 下一主题

[C++] 两个不同的同名类也能实现重载吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-14 16:52 |只看该作者 |倒序浏览
本帖最后由 fortuneteller 于 2014-02-14 16:53 编辑

看一程序包,发现里面包含有两个同名的类,两个类里面的建构函数和成员函数不同。难道c++还能重载不同的类,在使用时是不是具体的根据成员函数名和形参进行重载呢,不同类的建构函数也跟据参数进行重载? c++有这种用法吗,有大神指教下没。

论坛徽章:
0
2 [报告]
发表于 2014-02-14 20:10 |只看该作者
自己顶一下。大家留言指教下呀

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
3 [报告]
发表于 2014-02-14 22:00 |只看该作者
同一namespace下面不会有相同名字的两个类。
最多就是类比较大,
分为好几个文件来实现罢了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2014-02-15 00:05 |只看该作者
模板类??

论坛徽章:
0
5 [报告]
发表于 2014-04-04 01:40 |只看该作者
#include <iostream>
using namespace std;
// 通用版本
template<typename T1, typename T2>
class Dual {
public:
        static void printType (void) {
                cout << "Dual<T1,T2>" << endl;
        }
};
// 针对第二个类型参数取short的局部特化版本
template<typename T>
class Dual<T, short> {
public:
        static void printType (void) {
                cout << "Dual<T,short>" << endl;
        }
};
// 针对两个类型参数取相同类型的局部特化版本
template<typename T>
class Dual<T, T> {
public:
        static void printType (void) {
                cout << "Dual<T,T>" << endl;
        }
};
// 针对两个类型参数取某种类型的指针的局部特化
// 版本
template<typename T1, typename T2>
class Dual<T1*, T2*> {
public:
        static void printType (void) {
                cout << "Dual<T1*,T2*>" << endl;
        }
};
// 针对两个类型参数取相同类型指针的局部特化
// 版本
template<typename T>
class Dual<T*, T*> {
public:
        static void printType (void) {
                cout << "Dual<T*,T*>" << endl;
        }
};
// 针对两个类型参数取某种类型数组的局部特化
// 版本
template<typename T1, typename T2>
class Dual<T1[], T2[]> {
public:
        static void printType (void) {
                cout << "Dual<T1[],T2[]>" << endl;
        }
};
int main (void) {
        Dual<int, char>::printType ();
        Dual<int, short>::printType ();
        Dual<int, int>::printType ();
        Dual<int*, char*>::printType ();
        Dual<int*, int*>::printType ();
        Dual<int[], char[]>::printType ();
        return 0;
}


你说的是不是这样的,这是类模板里面对  类模板的局部特化,效果和函数的重载差不多,但不知道是不是重载,重载的定义是在同一作用域,有相同的函数名,和不同的型参看着有点向重载。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP