zoukankan      html  css  js  c++  java
  • 模板与类的继承混合使用

    注意以下代码:

      template<class MYT>

      class NEWCLASS: public MYT


      这种用法是我最近才发现的,在WTL中,如果我们用类向导创建的单文档中,有一个CAboutDlg这个类中就用到的了这种方式。

      哪位大神,帮我瞧瞧这种方法的优缺点在哪里?在什么场合下使用比较多?

    #include <iostream>
    using namespace std;
    
    class A
    {
    public:
    	void SetData(int _First = 0, int _Second = 0 )
    	{
    		a = _First;
    		b = _Second;
    	}
    	void Show()
    	{
    		cout<<"A::a: "<<a<<endl;
    		cout<<"A::b: "<<b<<endl;
    	}
    private:
    	int a;
    	int b;
    };
    
    template<class MYT>
    class NEWCLASS: public MYT
    {
    public:
    	void SetNewClassData(int _data = 5)
    	{
    		c = _data;
    	}
    
    	void NewClassShow()
    	{
    		cout<<"NEWCLASS::c: "<<c<<endl;
    	}
    private:
    	int c;
    };
    
    int main()
    {
    	typedef NEWCLASS<A> STDClass;
    	STDClass a;
    
    	a.SetData(5,6);
    	a.SetNewClassData(8);
    	a.Show();
    	a.NewClassShow();
    
    	return 0;
    }
    

     

    另外一个例子,代码是没有任何问题的,我更想知道的是这些大概有什么用处?

    #include <iostream>
    using namespace std;
    
    class A
    {
    public:
    	void SetData(int _First = 0, int _Second = 0 )
    	{
    		a = _First;
    		b = _Second;
    	}
    	void Show()
    	{
    		cout<<"A::a: "<<a<<endl;
    		cout<<"A::b: "<<b<<endl;
    	}
    private:
    	int a;
    	int b;
    };
    
    class B
    {
    public:
    	void BSetData(int _First = 0)
    	{
    		d = _First;
    	}
    	void BShow()
    	{
    		cout<<"B::d: "<<d<<endl;
    	}
    private:
    	int d;
    };
    
    template<class MYT>
    class NEWCLASS: public MYT,public B
    {
    public:
    	void SetNewClassData(int _data = 5)
    	{
    		c = _data;
    	}
    
    	void NewClassShow()
    	{
    		cout<<"NEWCLASS::c: "<<c<<endl;
    	}
    private:
    	int c;
    };
    
    int main()
    {
    	typedef NEWCLASS<A> STDClass;
    	STDClass a;
    
    	a.SetData(5,6);
    	a.SetNewClassData(8);
    	a.BSetData(66);
    	a.Show();
    	a.BShow();
    	a.NewClassShow();
    
    	return 0;
    }
    

      

  • 相关阅读:
    如何实现Canvas图像的拖拽、点击等操作
    HTML5新增核心工具——canvas
    Java API 之 Object
    浅显回顾 Java 面向对象的最后方面的知识
    草叶集 | 在看惠特曼的大路之歌时的一些想法
    关于 static 和 final 的一些理解
    面向对象中的一些概念的理解
    关于前面知识的一些试题
    关于方法的一些浅见和对象的一些理解
    数组的一些应用场景
  • 原文地址:https://www.cnblogs.com/BreakMind/p/2285508.html
Copyright © 2011-2022 走看看