现在的位置: 首页 > 综合 > 正文

c++学习过程中积累的知识点

2018年02月12日 ⁄ 综合 ⁄ 共 2217字 ⁄ 字号 评论关闭

 <1>BYTE AA[2]转换成ussign short类型的时候是 AA[1]在高字节。AA[0]在低字节
<2>BYTE AA[4]可以直接转换成float类型。
<3>函数CreateEvent(NULL, FALSE, TRUE, NULL)中
   参数一:NULL表示默认的安全级别。
   参数二:如果想在每次调用WaitForSingleObject 后让WINDOWS为您自动地把事件地状态恢复为”无信           号”状态,必须把该参数设为FALSE,否则,您必须每次调用ResetEvent函数来清除事件的信             号。
   参数三:信号的初始状态 TRUE表示有信号状态,FALSE:表示无信号状态。
   参数四: 事件对象的名称。您在OpenEvent函数中可能使用
   如果CreateEvent调用成功的话,会返回新生成的对象的句柄,否则返回NULL。
   这里有两个API函数用来修改事件对象的信号状态:SetEvent和ResetEvent。前者把事件对象设为”有   信号”状态,而后者正好相反
<4>有两个类 a 和 b 我在b中定义了一个全局变量c,还在b中定义了一个成员函数 我如何在a中即访问变量c也访问b中的成员函数
   在b的cpp文件中定义一个全局变量 int c;在b的h文件中声明 extern int c;表示c是一个全局的变量。在a的cpp文件中包含#include"b.h"
   在a.cpp文件中就可以访问全局变量和成员函数了。
<5>补码转换成十进制整数的过程:
   int 占4个字节,long也占四个字节,short 短整形占两个字节。
     WORD temp1=0xffff;
     int tmep1=(short)temp1

    得到temp1的值为-1.
    DWORD temp3=0xffffffff;
    int temp4=(long)temp3;  
    得到的temp4也是-1
<6> 0异或任何数=任何数   
    1异或任何数=任何数取反   
    任何数异或自己=把自己置0
<7>定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。基类的函数是虚函数,子类继承该类里面的方法也自动是虚函数
   定义一个函数为纯虚函数,才代表函数没有被实现。定义他是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数
<8>名字查找中,成员函数的形参优先于其所在类的数据成员
<9>socket编程:服务器端初始化一个套接字A,首先把A同一个地址绑定在一块(服务器地址)bind(),   然后把该套接字置成监听状态 listen(),监听该端口。如果有客户端connect()过来,服务器端的套接  字监听到就会用另一个套接字B=ACCEPT()接受过来的数据,服务器就可以那B和客户端进行收发操作了
   socket有两种模式 阻塞,非阻塞。有5中i/o模型:选择,异步选择,事件选择,重叠式i/o,完成端口
<10> 类里面的数据成员,加上mutable后,修饰为 const的成员函数就可以修改  
<11> 函数指针 int(*func1)(int x)为何不能定义成 int *func1(int x) 因为间接运算符(*)的优先级低于将参数列表括起来的圆括号。这样就变成了返回 整形指针的普通函数。
<12> void *ptr 将ptr声明为一个通用的指针,但没有指定它指向的东西。
<13> assert宏 assert(expr) 当expr结果为0时assert输出信息并终止程序执行,否则什么都不做
<14> Updatedata(TRUE)  == 将控件的值赋值给成员变量;  Updatedata(FALSE) == 将成员变量的值赋值给控件
<15> 同步I/O意味着在I/0操作完成之前,方法被阻塞,I/O操作完成后,方法返回其数据。使用异步I/O用户可以调     用BeginRead.主线程可以继续进行其他的工作,稍后,用户将能够处理数据。另外多个I/O请求可以被同时挂起
<16>& 什么时候是引用什么时候是取地址:和类型在一起的是引用,和变量在一起的是取址
<17>结构体里面可以包含结构体指针,但是绝对不能包含结构体变量
<18>如果通过vc++编写的DLL欲被其他语言编写的程序调用,应将函数的调用声明为_stdcall方式,winapi都是采用的这中方式,而c/c++缺省的调用方式都是_cdecl,_stdcall方式和_cdecl方式对函数名最终生成符号的方式不同。若采用C编译方式(在c++中需将函数声明 为extern"c"),_stdcall调用约定在输出函数名前面加下划线,后面加"@"符号和参数的字节数,形如_functionname@number:而_cdecl调用约定仅在输出函数名前面加下划线,_functionname
<19>*(int *)dllGlobalVar: dllGlobalVar是一个指针变量,表达式的意思是:将dllGlobalVar强制转化成 int 类型的指针,然后再取dllGlobalVar所指向的值
<20> 函数参数的传递方式:值传递,引用,指针传递。值传递:形参拷贝了一份实参数据,在函数中改变形参的值 函数外面实参的值并不会改变。引用:就是实参的别名,在函数体内改变 外面的也改变。指针传递:传的是实参的地址在函数中操作的也是实参。

抱歉!评论已关闭.