人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

C++設置符重載的變態用途之子類轉換

C++設置符重載的變態用途之子類轉換

更新時間:2022-09-11 文章作者:未知 信息來源:網絡 閱讀次數:

如果類的成員變量是特定類和自定義結構,使用該類名或結構作為操作符進行重載。(當然是基本類型也可以,不過實用性不強,只會降低代碼可讀性。)

  如下,一個CPerson,強行轉換為hand,也可以使用。

  類似于現實,我們只會對某個實物的具體特征表示強烈的興趣,也就是特征聚焦的意思。如HR部門只會關注一個應聘者的skill。

  當然在實際用途中,過度使用這種子類轉換,只會降低代碼可讀性。

  另外如類中有多個同類型的成員,這樣的轉換讓人莫名其妙。

  實例代碼:

// Person.h: interface for the CPerson class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PERSON_H__A825C71F_CB10_4997_8F9C_DBE792C5C387__INCLUDED_)
#define AFX_PERSON_H__A825C71F_CB10_4997_8F9C_DBE792C5C387__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef struct tag_hand
{
 bool bSix;
 bool bLefty;
} hand;

class CSkill
{
 public:
  CSkill():strDesc(NULL){}
  virtual ~CSkill(){}

 public:
  char *strDesc;
};

class CPerson
{
 public:
  CPerson();
  virtual ~CPerson();

  hand m_hand;
  CSkill m_skill;

  operator hand() const;
  operator CSkill() const;
 
  static void Test();
};

#endif // !defined(AFX_PERSON_H__A825C71F_CB10_4997_8F9C_DBE792C5C387__INCLUDED_)

// Person.cpp: implementation of the CPerson class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Person.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPerson::CPerson()
{}

CPerson::~CPerson()
{}

CPerson::operator hand() const
{
 return m_hand;
}

CPerson::operator CSkill() const
{
 return m_skill;
}

void CPerson::Test()
{
 CPerson person;
 person.m_hand.bSix = false;
 person.m_hand.bLefty = true;

 person.m_skill.strDesc = new char[1024];
 strcpy( person.m_skill.strDesc, "Good at programming..." );

 printf( "%d, %d\n", ((hand)person).bSix, ((hand)person).bLefty );
 printf( "%s\n", ((CSkill)person).strDesc );

 delete[] person.m_skill.strDesc;
 return;
}

int main(int argc, char* argv[])
{
 CPerson::Test();
 return 0;
}

  輸出:

  0, 1
  Good at programming...

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 福泉市| 定陶县| 策勒县| 蒙阴县| 襄垣县| 永州市| 徐闻县| 梁山县| 遂平县| 龙口市| 通许县| 海兴县| 邵东县| 尚义县| 平和县| 山阴县| 株洲市| 灵川县| 阿荣旗| 瓦房店市| 泾阳县| 温泉县| 镇赉县| 东港市| 韶山市| 吉首市| 金门县| 东阿县| 金平| 灌阳县| 黄浦区| 彰武县| 广东省| 莒南县| 旬阳县| 于都县| 象山县| 夏津县| 丹寨县| 郓城县| 九江市|