基于索引的类复合成员访问方式的探讨

2014-11-14 16:12曹大有卢中宁

曹大有 卢中宁

摘要类复合是通过模板元编程技术在C++的编译期由指定的类型序列和细粒度的template parameters来创建类结构的编程技术,它的基本构想是以类型序列作为代码生成机制,驱动编译器在编译期自动生成代码.在对类型成员的访问方法上,通过显式的类型成员限定来访问类型成员value的方法,容易产生歧义.本文通过索引确定类型成员,从而进一步访问类型成员value的方法,解决了模棱两可(歧义)的现象.

关键词类复合;函数实参推导;基类链

中图分类号TP311文献标识码A文章编号10002537(2014)05009005

模板元编程(Metaprogramming)指的是高阶编程,它运行在编译期.作为一种高阶C++编程技术,C++强大的模板机制赋予了模板在编译期的运算能力,模板元编程突出了编译期在整个程序构建和运行过程中的地位,努力将计算从运行期提前至编译期,它不但有效地防止程序错误被传播到运行期,而且能够实现以静态代码控制动态代码的目标,使计算尽可能完成于编译期的同时也提高了最终程序的运行性能.

3结束语

模板元编程是C++中一种高级编程技术,它处于编译期,而类复合可以驱动C++的编译器在编译期自动生成所需的代码,同时也将类型计算尽量提前至编译期,减少了运行期出错的机率,提高了最终程序运行性能.本文通过以索引的方式来访问类复合对象中的成员值,解决了歧义现象,解决的类复合成员中的value值的访问问题.

参考文献:

[1]DAVID A.C++模板元编程[M].荣耀,译.北京:机械工业出版社,2010:153155.

[2]ANDREI A.C++设计新思维[M].侯捷,於春景,译.武汉:华中科技大学出版社,2003:6474.

[3]DAVID V, NICOLAI M J. C++ template中文版[M].陈伟柱,译.北京:人民邮电出版社,2004.

[4]HERBERT S.C++完全参考手册[M].4版.北京:清华大学出版社, 2004.

[5]王晓宇,钱红兵.基于UML类图和顺序图的C++代码自动生成方法的研究[J].计算机应用与软件, 2013,30(1):190195.

[6]周毅,顾进广,张晓龙,等.一种面向复合属性的自适应对象模型[J].计算机应用与软件, 2008,25(11):137139.

[7]徐静雯,周继恩,施跃跃,等.软件密集型系统的故障诊断技术研究[J].计算机应用与软件, 2012,29(2):175178.

[8]黄山,陈昱松,王建伟,等.一种基于UML与SDL融合建模的组件系统测试方法[J].计算机应用与软件, 2011,28(7):175177,182.

[9]唐峰,许第洪.SolidWorks与Pro/Engineer之间图形数据交换方式的研究[J].湖南师范大学自然科学学报, 2011,34(1):3742.

[10]刘震,缪力.基于动态调用图的Java程序修改影响分析技术[J].湖南师范大学自然科学学报, 2011,34(6):2630.

[11]PLAUGER P J, STEPANOV A A, LEE M, et al.C++ STL中文版[M].王昕,译.北京:中国电力出版社, 2002.

[12]BLANCHETTE J, SUMMERFIELD M. C++ GUI Qt 4编程[M].闫锋欣,曾泉人,张志强,译.北京:电子工业出版社, 2008.

[13]叶至军.C++ STL开发技术导引[M].北京:人民邮电出版社, 2007.

[14]MATTHEW H A. 泛型编程与STL[M].侯捷,译.北京:中国电力出版社, 2003.

[15]ANDREW K, BARBARA M. C++沉思录[M].黄晓春,译.北京:人民邮电出版社, 2008.

(编辑胡文杰)

摘要类复合是通过模板元编程技术在C++的编译期由指定的类型序列和细粒度的template parameters来创建类结构的编程技术,它的基本构想是以类型序列作为代码生成机制,驱动编译器在编译期自动生成代码.在对类型成员的访问方法上,通过显式的类型成员限定来访问类型成员value的方法,容易产生歧义.本文通过索引确定类型成员,从而进一步访问类型成员value的方法,解决了模棱两可(歧义)的现象.

关键词类复合;函数实参推导;基类链

中图分类号TP311文献标识码A文章编号10002537(2014)05009005

模板元编程(Metaprogramming)指的是高阶编程,它运行在编译期.作为一种高阶C++编程技术,C++强大的模板机制赋予了模板在编译期的运算能力,模板元编程突出了编译期在整个程序构建和运行过程中的地位,努力将计算从运行期提前至编译期,它不但有效地防止程序错误被传播到运行期,而且能够实现以静态代码控制动态代码的目标,使计算尽可能完成于编译期的同时也提高了最终程序的运行性能.

3结束语

模板元编程是C++中一种高级编程技术,它处于编译期,而类复合可以驱动C++的编译器在编译期自动生成所需的代码,同时也将类型计算尽量提前至编译期,减少了运行期出错的机率,提高了最终程序运行性能.本文通过以索引的方式来访问类复合对象中的成员值,解决了歧义现象,解决的类复合成员中的value值的访问问题.

参考文献:

[1]DAVID A.C++模板元编程[M].荣耀,译.北京:机械工业出版社,2010:153155.

[2]ANDREI A.C++设计新思维[M].侯捷,於春景,译.武汉:华中科技大学出版社,2003:6474.

[3]DAVID V, NICOLAI M J. C++ template中文版[M].陈伟柱,译.北京:人民邮电出版社,2004.

[4]HERBERT S.C++完全参考手册[M].4版.北京:清华大学出版社, 2004.

[5]王晓宇,钱红兵.基于UML类图和顺序图的C++代码自动生成方法的研究[J].计算机应用与软件, 2013,30(1):190195.

[6]周毅,顾进广,张晓龙,等.一种面向复合属性的自适应对象模型[J].计算机应用与软件, 2008,25(11):137139.

[7]徐静雯,周继恩,施跃跃,等.软件密集型系统的故障诊断技术研究[J].计算机应用与软件, 2012,29(2):175178.

[8]黄山,陈昱松,王建伟,等.一种基于UML与SDL融合建模的组件系统测试方法[J].计算机应用与软件, 2011,28(7):175177,182.

[9]唐峰,许第洪.SolidWorks与Pro/Engineer之间图形数据交换方式的研究[J].湖南师范大学自然科学学报, 2011,34(1):3742.

[10]刘震,缪力.基于动态调用图的Java程序修改影响分析技术[J].湖南师范大学自然科学学报, 2011,34(6):2630.

[11]PLAUGER P J, STEPANOV A A, LEE M, et al.C++ STL中文版[M].王昕,译.北京:中国电力出版社, 2002.

[12]BLANCHETTE J, SUMMERFIELD M. C++ GUI Qt 4编程[M].闫锋欣,曾泉人,张志强,译.北京:电子工业出版社, 2008.

[13]叶至军.C++ STL开发技术导引[M].北京:人民邮电出版社, 2007.

[14]MATTHEW H A. 泛型编程与STL[M].侯捷,译.北京:中国电力出版社, 2003.

[15]ANDREW K, BARBARA M. C++沉思录[M].黄晓春,译.北京:人民邮电出版社, 2008.

(编辑胡文杰)

摘要类复合是通过模板元编程技术在C++的编译期由指定的类型序列和细粒度的template parameters来创建类结构的编程技术,它的基本构想是以类型序列作为代码生成机制,驱动编译器在编译期自动生成代码.在对类型成员的访问方法上,通过显式的类型成员限定来访问类型成员value的方法,容易产生歧义.本文通过索引确定类型成员,从而进一步访问类型成员value的方法,解决了模棱两可(歧义)的现象.

关键词类复合;函数实参推导;基类链

中图分类号TP311文献标识码A文章编号10002537(2014)05009005

模板元编程(Metaprogramming)指的是高阶编程,它运行在编译期.作为一种高阶C++编程技术,C++强大的模板机制赋予了模板在编译期的运算能力,模板元编程突出了编译期在整个程序构建和运行过程中的地位,努力将计算从运行期提前至编译期,它不但有效地防止程序错误被传播到运行期,而且能够实现以静态代码控制动态代码的目标,使计算尽可能完成于编译期的同时也提高了最终程序的运行性能.

3结束语

模板元编程是C++中一种高级编程技术,它处于编译期,而类复合可以驱动C++的编译器在编译期自动生成所需的代码,同时也将类型计算尽量提前至编译期,减少了运行期出错的机率,提高了最终程序运行性能.本文通过以索引的方式来访问类复合对象中的成员值,解决了歧义现象,解决的类复合成员中的value值的访问问题.

参考文献:

[1]DAVID A.C++模板元编程[M].荣耀,译.北京:机械工业出版社,2010:153155.

[2]ANDREI A.C++设计新思维[M].侯捷,於春景,译.武汉:华中科技大学出版社,2003:6474.

[3]DAVID V, NICOLAI M J. C++ template中文版[M].陈伟柱,译.北京:人民邮电出版社,2004.

[4]HERBERT S.C++完全参考手册[M].4版.北京:清华大学出版社, 2004.

[5]王晓宇,钱红兵.基于UML类图和顺序图的C++代码自动生成方法的研究[J].计算机应用与软件, 2013,30(1):190195.

[6]周毅,顾进广,张晓龙,等.一种面向复合属性的自适应对象模型[J].计算机应用与软件, 2008,25(11):137139.

[7]徐静雯,周继恩,施跃跃,等.软件密集型系统的故障诊断技术研究[J].计算机应用与软件, 2012,29(2):175178.

[8]黄山,陈昱松,王建伟,等.一种基于UML与SDL融合建模的组件系统测试方法[J].计算机应用与软件, 2011,28(7):175177,182.

[9]唐峰,许第洪.SolidWorks与Pro/Engineer之间图形数据交换方式的研究[J].湖南师范大学自然科学学报, 2011,34(1):3742.

[10]刘震,缪力.基于动态调用图的Java程序修改影响分析技术[J].湖南师范大学自然科学学报, 2011,34(6):2630.

[11]PLAUGER P J, STEPANOV A A, LEE M, et al.C++ STL中文版[M].王昕,译.北京:中国电力出版社, 2002.

[12]BLANCHETTE J, SUMMERFIELD M. C++ GUI Qt 4编程[M].闫锋欣,曾泉人,张志强,译.北京:电子工业出版社, 2008.

[13]叶至军.C++ STL开发技术导引[M].北京:人民邮电出版社, 2007.

[14]MATTHEW H A. 泛型编程与STL[M].侯捷,译.北京:中国电力出版社, 2003.

[15]ANDREW K, BARBARA M. C++沉思录[M].黄晓春,译.北京:人民邮电出版社, 2008.

(编辑胡文杰)