Visual C++.NET技术内幕(第6版)学习笔记3

 

 

 

1.::域名解析符

返回值类型名 类名::函数成员名(参数表) 

函数体。 

这个是在类内声明函数后在类外定义的一种方法!

如果不加"类名::"的话,编译系统就不会知道你的函数属于哪个类;

另外,这样定义函数一定要在类中声明之后,说明它是类的成员函数才可以!

在类内声明的时候就不需要::了,直接 返回值类型 函数名(参数表) 就可以了! 

2.枚举类型emum

1.10 枚举类型

在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。

11.10.1 枚举类型的定义和枚举变量的说明

1. 枚举的定义枚举类型定义的一般形式为:

enum 枚举名{ 枚举值表 };

在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。

例如:

 

该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。

2. 枚举变量的说明

如同结构和联合一样,枚举变量也可用不同的方式说明,即(1)先定义后说明(2)同时定义说明(3)直接说明。

设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

enum weekday{ sun,mou,tue,wed,thu,fri,sat };

enum weekday a,b,c;

或者为:

enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;

或者为:

enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;

11.10.2 枚举类型变量的赋值和使用

枚举类型在使用中有以下规定:

1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

例如对枚举weekday的元素再作以下赋值:sun=5;都是错误的。

2. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。

【例11.10】

main(){

enum weekday

{ sun,mon,tue,wed,thu,fri,sat } a,b,c;

a=sun;

b=mon;

c=tue;

printf("%d,%d,%d",a,b,c);

}

 

说明:

只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

a=sum;

b=mon;

是正确的。而:

a=0;

b=1;

是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。

如:

a=(enum weekday)2;

其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:

a=tue;

还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

【例11.11】

main(){

enum body

{ a,b,c,d } month[31],j;

int i;

j=a;

for(i=1;i<=30;i++){

month[i]=j;

j++;

if (j>d) j=a;

}

for(i=1;i<=30;i++){

switch(month[i])

{

case a:printf(" %2d %c/t",i,'a'); break;

case b:printf(" %2d %c/t",i,'b'); break;

case c:printf(" %2d %c/t",i,'c'); break;

case d:printf(" %2d %c/t",i,'d'); break;

default:break;

}

}

printf("/n");

3.C++中.h和.cpp的关系?

C++中,一般把类的定义放到头文件(.h)中,把类的实现放到源文件(.cpp)中,所以,一般在C++中,一个类一般需要一个与类同名的头文件和一个源文件。比如定个一个类 Sample,类中定个一个私有成员变量,和两个公共成员函数,有如下代码:

//Sample.h

class Sample

{

private:

DWORD dw; //私有成员变量

public:

Sample(DWORD dw=0); //构造函数,可以不用

~Sample(); //析构函数,可以不用

void SetDw(DWORD dw); //公共成员函数 SetDw ,设置变量

DWORD GetDw(); //公共成员函数 GetDw ,取得变量

};

//Sample.cpp

//代码中因为函数形参名与类成员相同,所以访问类成员变量时用了this指针,表明这是类成员变量,而不是参数。

#include "Sample.h" //头文件不可少

void Sample::Sample(DWORD dw) //构造函数的实现

{

this->dw=dw;

}

void Sample::SetDw(DWORD dw); //SetDw 成员函数的实现

{

this->dw=dw;

}

DWORD Sample::GetDw(); //GetDw 成员函数的实现

{

return this->dw;

 

P138页的实现

1.在.h文件定义:

HBRUSH m_hYellowBrush;

HBRUSH m_hRedBrush;

2.在.cpp中OnInitDialog()初始化:

m_hYellowBrush = CreateSolidBrush(RGB(255,255,0)); 

m_hRedBrush = CreateSolidBrush(RGB(0,0,0)); 

3.在OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)添加代码:

if (nCtlColor==CTLCOLOR_EDIT)

{

 

pDC->SetBkColor(RGB(255,255,0));//黄色

 

return m_hYellowBrush;

}

 

 

if (nCtlColor==CTLCOLOR_DLG)

{

pDC->SetBkColor(RGB(0,0,0));//红色

 

return m_hRedBrush;

}

 

return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);;

ex07b

1.ex07bview.cpp(92) : error C2440: “=”: 无法从“bool”转换为“HANDLE”

对比源代码发现:

while (h=::FindFirstFile(dlgFile.m_strFilename,&fData)

!=(HANDLE) 0xFFFFFFFF)

少了半个(,低级错误,改正之后OK

2.程序运行,点击左键弹出两个对话框,一个设计的,一个打开对话框

解决:没有设置设计对话框的属性,Style:Child,Border:None

3.程序运行,全部删除还是有错误,不弄了,可能跟系统和编程工具有关吧

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值