// ClassTestA.h: interface for the CClassTestA class. // // #if !defined(AFX_CLASSTESTA_H__7355041B_59F2_4874_8936_E95F229138CC__INCLUDED_) #define AFX_CLASSTESTA_H__7355041B_59F2_4874_8936_E95F229138CC__INCLUDED_ #include <windows.h> #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 const int G_INT_LEN_BUFFER_MAX = 4096; const int G_INT_PassType_Col_Max = 12; class CClassTestA { public: enum ePassType { ePassType_IdentityCard = 0, /** 身份证*/ ePassType_StudentCard, /** 学生证 */ ePassType_Passport, /** 护照 */ ePassType_WorkPermit, /** 工作证 */ ePassType_Unknown, /** 未知 */ }; public: CClassTestA(); virtual ~CClassTestA(); CClassTestA(CClassTestA& rhs); CClassTestA& operator= (CClassTestA& rhs); void Init(); void UnInit(); void Copy(CClassTestA& rhs); virtual void vDump(); public: protected: public:/**< member geter, seter */ public:/**< member */ private: /** * 除了数组之外的常量可以不声明为static * 声明格式: xxType const m_xx; */ int const m_n1; PCHAR const m_pcMsg; /** * 通用的方法 * 声明静态类属常量 static xxType const m_xx; * 类属数组只能用这种方法声明 */ static float m_fFoodInventory; /** 食品的库存量, 单位[克] */ static PCHAR const m_pcPassName[ePassType_Unknown]; /** 证件名称数组 */ static PCHAR const m_pcPassType[][G_INT_PassType_Col_Max]; /**< 证件内容数组 */ }; #endif // !defined(AFX_CLASSTESTA_H__7355041B_59F2_4874_8936_E95F229138CC__INCLUDED_)
// ClassTestA.cpp: implementation of the CClassTestA class. // // #include "stdafx.h" #include "ClassTestA.h" // // Construction/Destruction // /** * 类属静态常量初始化,必须在实现文件中进行赋值 */ float CClassTestA::m_fFoodInventory = 2188.66f; PCHAR const CClassTestA::m_pcPassType[][G_INT_PassType_Col_Max] = { /** 身份证 */ {"姓名", "性别", "民族", "出生", "住址", "公民身份号码", NULL, NULL, NULL, NULL, NULL, NULL}, /** 学生证 */ {"科别", "学号", "姓名", "性别", "出生日期", "身分证字号", "家长或监护人", NULL, NULL, NULL, NULL, NULL}, /** 护照 */ {"证件类型", "护照签发国", "护照号", "国籍", "出生日期", "性别", "证件有效期", "姓", "名", NULL, NULL, NULL}, /** 工作证 */ {"单位名称", "姓名", "部门", "职务", "工号", NULL, NULL, NULL, NULL, NULL, NULL, NULL}, {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, }; PCHAR const CClassTestA::m_pcPassName[ePassType_Unknown] = { "身份证", "学生证", "护照", "工作证", }; /** * 类属非静态常量初始化,必须使用变量初始化列表 * must be initialized in constructor base/member initializer list */ CClassTestA::CClassTestA() : m_n1(-1), m_pcMsg("welcome") { Init(); } CClassTestA::~CClassTestA() { UnInit(); } CClassTestA::CClassTestA(CClassTestA& rhs) : m_n1(rhs.m_n1), m_pcMsg(rhs.m_pcMsg) { if(this == &rhs) return; Copy(rhs); } CClassTestA& CClassTestA::operator= (CClassTestA& rhs) { if(this == &rhs) return *this; Copy(rhs); return *this; } void CClassTestA::Init() { } void CClassTestA::UnInit() { } void CClassTestA::Copy(CClassTestA& rhs) { } void CClassTestA::vDump() { int m = 0; int n = 0; int nArraySize = 0; int nArrayColSize = 0; int nArrayRowSize = 0; CHAR Buf[G_INT_LEN_BUFFER_MAX]; /** * error C2166: l-value specifies const object */ //m_n1 = 1; sprintf(Buf, "m_n1 = %d/n/n", m_n1); OutputDebugString(Buf); //*(m_pcMsg + 1) = '/0';//能编译过, 运行报错 sprintf(Buf, "m_pcMsg = %s/n/n", m_pcMsg); OutputDebugString(Buf); sprintf(Buf, "m_fFoodInventory = %f/n/n", m_fFoodInventory); OutputDebugString(Buf); /** * printf m_cArray[][G_INT_PassType_Col] */ nArrayColSize = G_INT_PassType_Col_Max; nArrayRowSize = sizeof(m_pcPassType) / (sizeof(PCHAR) * nArrayColSize); sprintf(Buf, "m_pcPassType[%d][%d] = /n/n", nArrayRowSize, nArrayColSize); OutputDebugString(Buf); for(m = 0; m < nArrayRowSize; m++) { if( m >= ePassType_IdentityCard && m < ePassType_Unknown) { sprintf(Buf, "证件名称[%s]:/n", m_pcPassName[(ePassType)m]); OutputDebugString(Buf); } for(n = 0; n < nArrayColSize; n++) { /** * error C2166: l-value specifies const object */ //m_cArray[m][n] = '/0'; if(NULL == m_pcPassType[m][n]) break; sprintf(Buf, "%s, ", m_pcPassType[m][n]); OutputDebugString(Buf); } OutputDebugString("/n/n"); } OutputDebugString("/n"); }
// ClassConstVariableTest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "ClassTestA.h" int main(int argc, char* argv[]) { printf("Hello World!/n"); CClassTestA test; test.vDump(); /** @note run result m_n1 = -1 m_pcMsg = welcome m_fFoodInventory = 2188.659912 m_pcPassType[5][12] = 证件名称[身份证]: 姓名, 性别, 民族, 出生, 住址, 公民身份号码, 证件名称[学生证]: 科别, 学号, 姓名, 性别, 出生日期, 身分证字号, 家长或监护人, 证件名称[护照]: 证件类型, 护照签发国, 护照号, 国籍, 出生日期, 性别, 证件有效期, 姓, 名, 证件名称[工作证]: 单位名称, 姓名, 部门, 职务, 工号, */ getchar(); return 0; }