随笔分类 -  C++ 学习笔记

学习C++过程中不太清楚的问题以及心得体会都记录下来。
表格控件类的编写
摘要:完整流程:1、 构建新类,在对话框中使用这个类。2、 画表格3、 填充4、 标号第一步:构建新类 新建一个对话框项目。设ID为IDC_CLASSTEST,假设我们新建的类为CTableCtrl;那么在ClassTestDlg.h中定义一个成员变量:TableCtrl m_table;然后在ClassTestDlg.cpp中找到void CClassTestDlg::DoDataExchange(CDataExchange* pDX){ CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TABLE, m_table); // 这句是添加上去的。 阅读全文
posted @ 2012-08-24 16:26 fengluo 阅读(465) 评论(0) 推荐(0)
编程规范
摘要:编程规范要点(自己经常会犯错误的地方)1、注释应该放于代码的上方或右方,不可放于下方。2、代码较长,有多重嵌套时,应在段落结束处加注释。3、bool变量与零值比较:if(flag);整型变量与零值比较:if(i==0); Win32 API IsBadReadPtr IsBadWritePtr IsBadStringPtr IsBadCodePtr因为精度问题,浮点型变量不能直接使用==、!=与他值比较;指针变量使用NULL作为零值;不可混淆。4、使用malloc和new申请内存后,立即检查指针是否为NULL( if(*p != NULL) )。使用free或delete释放内存后,立即将指针 阅读全文
posted @ 2012-08-06 18:03 fengluo 阅读(1036) 评论(0) 推荐(0)
文件操作
摘要:关于文件操作,有许多需要学习的地方,现从零碎之处说起:1、怎样遍历目录下的子目录和文件?使用: CFileFind finder; CString path; path.Format("%s/*.*",lpszDirPath); BOOL bWorking = finder.FindFile(path); while(bWorking){ bWorking = finder.FindNextFile();}// 成功则返回句柄,失败则返回false;可用于判断是否是空目录。2、如何获得子目录或文件的文件名和路径?在上述代码内添加:string szaDirName = fi 阅读全文
posted @ 2012-08-06 18:02 fengluo 阅读(187) 评论(0) 推荐(0)
由Buffer习题所得
摘要:由于对Buffer了解比较少,特将一些相关的知识点记下,以便查阅。一、如何定义一个Buffer,如何初始化?char pBuf[50] = {0};// 定义+初始化二、如何给Buffer赋值?使用memcpy():#define H "huang"memcpy(pBuf, H, strlen(H));若想添加'\0',只需跳过该索引即可,因已初始化为0。三、如何重置某个索引的值?使用memset():memset(pBuf, 设值, 设多少个);四、数组初始化如:char p[] = {};在VS2008下运行,会自动初始化为0.内置数据类型没有显示的初始 阅读全文
posted @ 2012-07-31 18:08 fengluo 阅读(161) 评论(0) 推荐(0)
第九章 顺序容器
摘要:9.1 顺序容器的定义笔记:(1)当将一个容器复制给另一个容器时,容易类型和元素类型都要一致。 (2)在定义容器的容器时,必须>>分开为> >,以表示这是分开的尖括号,而不是一个输出符号。9.2 迭代器及其范围笔记:(1)关系运算符<,<=,>,>= 只适用于deque和vector。(2)list容器只支持自增自减运算和相等(不等)运算。(3)迭代器的范围由[first,last)确定,last必须在first后面。9.3 顺序容器的操作问题:(1)9.3.3中最后一段,是否还是会导致无限循环?笔记:(1)添加元素的方式:push_back,p 阅读全文
posted @ 2012-07-16 17:44 fengluo 阅读(136) 评论(0) 推荐(0)
第八章 标准IO库
摘要:8.1 面向对象的标准库笔记:(1)IO类型的三个独立头文件:iostream/fstream/sstream。分别用于读写控制窗口,已命名文件,存储在内存中的string对象这三个类型。(2)标准库对象不能做复制或赋值操作。只有支持复制操作的对象才能存放在容器中。 形参和返回类型不能是流,若要返回或返回一个IO对象,除非是返回指向该对象的引用或指针。8.3 输出缓冲区的刷新笔记:(1)操纵符:flush、ends、endl、unitbuf、(2)如果程序崩溃,则不会刷新缓冲区。若要看到所有的输出,则应在每个输出后显示地加上endl或flush;(3)在调用tie函数的时候如果传递0,则会打破 阅读全文
posted @ 2012-07-13 18:04 fengluo 阅读(130) 评论(0) 推荐(0)
第七章 函数
摘要:7.1 函数定义笔记:(1)即使形参的类型相同,也必须重复定义。 (2)局部于函数的变量不能与该函数任意形参的名字相同。 (3)接口错误:在传递函数实参时,传递过多,忽略某个实参或传递错误类型的实参。 (4)定义函数必须指定返回类型。7.2 形参问题1:不是说函数内部的改变不会改变实参的值吗?为什么指针形参会变?问题2:对于省略符形参不太明白。笔记:(1)指针初始化规则:可以将指向const型对象的指针指向非const型对象,但不能将指向非const对象的指针指向const对象。 (2)想要改变实参的值,必须采用引用或者指针的方式绑定。 (3)避免复制,使用引用形参能够提高效率。(4)当使用引 阅读全文
posted @ 2012-07-13 12:05 fengluo 阅读(149) 评论(0) 推荐(0)
第六章 语句
摘要:提醒:(1)回头看关于迭代器的知识。6.1 简单语句笔记:(1)空语句应加上注释。 (2)注意循环体后的空语句,是否已改变程序员意图,造成无限循环或错误。6.2 声明语句笔记:(1)变量的定义有且只有一个,声明(extern)可以有很多个。(2)声明只有在函数体外才能进行初始化,此时属于定义,之后再对其进行定义是错误的。6.3 复合语句笔记:(1)块内引入的名字只能在块内使用,块外不可见。6.4 语句作用域问题:(1)对于作用域外的变量,是不可能用到其在作用域内的残留值的。这句话是什么意思?例如:vector<int>::size_type index=0; for(;index! 阅读全文
posted @ 2012-07-11 17:54 fengluo 阅读(111) 评论(0) 推荐(0)
第五章问题与记录
摘要:心得及问题汇总。 阅读全文
posted @ 2012-07-10 16:29 fengluo 阅读(119) 评论(0) 推荐(0)