
c++学习笔记
想游泳的鱼
喜欢足球,支持国际米兰
展开
-
泛型编程与设计新思维
前言 永远记住,编写代码的宗旨在于简单明了,不要使用语言中的冷僻特性,耍小聪明,重要的是编写你理解的代码,理解你编写的代码,这样你可能会做的更好。 --- Herb Sutter 1998年,国际C++标准正式通过,标准化对C++最重要的贡献是:对"强大的抽象概念"给于更有力的支持,以降低软件的复杂度,C++提供了二种功能 强大的抽象方法:面向对象编程与泛转载 2007-09-25 17:46:00 · 626 阅读 · 0 评论 -
Windows下安装GCC G++ 并使用CMake生成Makefile文件,并使用GDB进行调试
想在Windows下使用GCC G++编译C程序,并想使用CMake来生成Makefile文件,在这个过程中碰到了一些问题,特记录下来。安装CMake这个很简单,去CMake的官网下载一个CMake的Windows安装包,点击安装即可。在安装结束的时候,最好选择 设置环境变量CMake官网 https://cmake.org/安装GCC G++首先需要去安装mingW,参考这...原创 2019-02-11 15:03:41 · 8134 阅读 · 0 评论 -
模板学习笔记
(1)模板语法 template这个关键字会告诉编译器,随后的类定义将操作一个或更多未指明的类型。当由这个模板产生实际类代码时,必须指定这些类型以使编译器能够替代他们。 template class Arrary{ enum { size = 100}; T A[size]; void display();转载 2008-10-26 10:48:00 · 889 阅读 · 0 评论 -
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数转载 2007-09-25 16:54:00 · 760 阅读 · 0 评论 -
内联函数学习笔记
最近在写程序的时候,为了调高程序的执行效率,想使用内联函数,就看了《Think In C++》里面关于内联函数的那一章。这一章讲了内联函数的使用,内联函数和预处理器的区别,以及内联函数使用的限制。 为什么要使用内联函数:为了既保持预处理器宏的效率又增加安全性,而且还能像一般成员函数一样可以在类里访问自如。宏的缺点是:1.宏只是对字符串的简单替代,这样编译器不会对其进行类型检查,这样转载 2009-05-10 10:55:00 · 556 阅读 · 0 评论 -
C++虚函数表解析(转)
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我转载 2008-09-24 16:04:00 · 775 阅读 · 0 评论 -
C语言宏定义中#用法
C语言宏定义中#用法 宏中"#"和"##"的用法一、一般用法我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.用法:#i nclude#i ncludeusing namespace std;#define STR(s) #s#define CONS(a,b) int(a##e##b)int main(){ printf(STR(vck));转载 2008-08-06 13:13:00 · 901 阅读 · 0 评论 -
定义函数对象
尽管函数指针被广泛用于实现函数回调,但C++还提供了一个重要的实现回调函数的方法,那就是函数对象。函数对象(也称“算符”)是重载了“()”操作符的普通类对象。因此从语法上讲,函数对象与普通的函数行为类似。 用函数对象代替函数指针有几个优点,首先,因为对象可以在内部修改而不用改动外部接口,因此设计更灵活,更富有弹性。函数对象也具备有存储先前调用 结果的数据成员。在使用普通函数时需要将先前调转载 2008-03-12 09:06:00 · 780 阅读 · 0 评论 -
使用wxWidgets开发跨平台的GUI程序
使用wxWidgets开发跨平台的GUI程序 Taii/回家念经 2006-05-20 1、探索背景: 1.1 引言 从开始使用c/c++编码起算来也快有5年了,期间完成了无数项目,编写了无数程序,而且大部分程序都是同时完成win32/*nix的版本,但是跨平台 的都限于win32 console/*nix textmode模式,一直为拘泥于PSDK/MFC而不能很好地完成快速开发cr转载 2007-10-10 16:40:00 · 1188 阅读 · 0 评论 -
二叉树的创建、前序遍历、中序遍历、后序遍历
// BTree.cpp : Defines the entry point for the console application./* 作者:成晓旭 时间:2001年7月2日(9:00:00-14:00:00) 内容:完成二叉树的创建、前序遍历、中序遍历、后序遍历 时间:2001年7月2日(14:00:00-16:00:00) 内容:完成二叉树的叶子节点访问,交换左、右孩子*/#include转载 2007-10-09 20:04:00 · 649 阅读 · 0 评论 -
C++ Boost库简介
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。 boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处 理元编程、并发编程转载 2007-09-25 17:47:00 · 804 阅读 · 0 评论 -
C/C++数组的下标可以为负
今天偶然碰到C/C++的数组下标可以为负值,感到十分奇怪。平时写代码,下标都是从零开始,从来没考虑到这个问题。写了一下测试代码,居然通过了。但是值却是乱的。但是如果你写下标的值在数组的范围内,是可以输出一个正确的值的。int a[5] = {1,2,3,4,5}; int *ptr1 = (int*)(&a+1); printf("%x,%x,",ptr1[-1]);这个结...原创 2019-02-13 15:01:24 · 5452 阅读 · 2 评论