摘要:方法一: 参数里含有指向指针的指针。 注意:如果函数参数里只有一个指向结构体的指针,是无法正确地返回结构体的值的。原因在于在编译的时候,会对入参p产生一个备份_p. 参考此文:http://www.cnblogs.com/kaituorensheng/p/3246900.html 方法二:返回一个指
阅读全文
随笔分类 - C/C++
1
摘要:1. <> 和 "" 的区别。 2. 有个技巧就是把.h 文件放到 stdafx.h 中,这样很多时候,就不用重复的引用头文件了。。因为 stdafx.h 基本上每个头文件都会include它
阅读全文
摘要:Error 33 error LNK2019: unresolved external symbol "\xxx.obj yyy.Native 仔细看看错误信息,后来发现尽然是构造函数的一个参数没有写。:( LNK2019: unresolved external symbol _MFCreateA
阅读全文
摘要:Debug的时候发现总是返回 INVALID_HANDLE_VALUE, 将VS用管理员权限打开后,问题解决。
阅读全文
摘要:先理解一下函数原型:HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, // 指向SECURITY_ATTRIBUTES结构的指针,用于决定返回的handle是否可以被子进程继承。如果是N...
阅读全文
摘要:C语言:memset extern void *memset(void *buffer,int c,int count); #include 功能:把buffer所指内存区域的前count个字节设置成字符c 说明:返回指向buffer的指针.char a[100]; memset(a,'\0',s...
阅读全文
摘要:原文:http://www.codeguru.com/cpp/cpp/cpp_mfc/callbacks/article.php/c10557/Callback-Functions-Tutorial.htmCallback Functions TutorialIntroductionIf you a...
阅读全文
摘要:原文:http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspxThe data types supported by Windows are used to define function return values, function and message parameters, and structure members. They define the size and meaning of these elements. For more information about the u
阅读全文
摘要:1. 字符基础: ASCII, MBCS/DBCS, Unicode 有3种编码模式,并对应3种字符类型。 (1)单字节字符集(single-byte character set (SBCS)). -在这种编码模式下,所有的字符都只用一个字节(Byte)标示。 -ASCII是SBCS,用一个字节标示为'\0'的来标识SBCS字符串的结束 -单字节字符包含拉丁文字母表,accented characters及ASCII标准和DOS操作系统定义的图形字符。 例如"Hi!"是如下存放的. (1Byte存放数值范围: 00 ~ FF (16进制)) ┌───────
阅读全文
摘要:(C++)从本机获取WMI数据.下面的步骤被用于执行WMI程序. 第1步到第5步包含了建立和连接WMI的所有步骤。第6,7步用于数据查询和获取。1. 通过调用CoInitialzeEx来初始化COM参数.2. 通过调用CoInitializeSecurity来初始化COM过程安全.3. 通过调用CoCreateInstance来实例化。4. 通过调用IWbemLocator::ConnectServer来获取一个本机root\cimv2命名空间的IWbemServices的指针。5. 设置IWbemServices代理安全,WMI service可以通过调用CoSetProxyBlanket来
阅读全文
摘要:如果在变量申明语句中使用了限定符const, 那么变量在程序执行期间将不能被改变。const double version = 3.2;const 常见用途:1. 定义const指针,防止函数中修改由指针参数所指向的变量。#include <iostream>using namespace std;void printStr(const char *str){ //使用const来确保函数不能修改str所指向对象. while(*str){ //*str=*str+1; //错误,不能修改参数指向的对象。 cout<<(char)*str; str++; }}int m
阅读全文
摘要:使用模板可以创建可重用的代码。模板可以分为两类,一个是函数模板(通用函数),另外一个是类模板(通用类)。函数模板定义了一组应用于不同数据类型的通用运算。- 使用关键字 template 来创建.template <class Type> ret-type func-name(parameter list){ //..}//或者template <class Type> ret-type func-name(parameter list){ //..}其中,Type 是一个占位符,代表函数使用的数据类型.#include <iostream>using nam
阅读全文
摘要:纯虚函数(pure virtual function)是指在基类中声明但是没有定义的虚函数。通用形式:virtual type func-name(parameter-list)=0;其中,type 是函数的返回类型,func-name 是函数名。=0 是把虚函数制定为纯虚函数。通过虚函数申明为纯虚函数可以强制在派生类中重新定义虚函数。(否则编译器报错)如果一个类至少含有一个纯虚函数,那么这个类被称为抽象类(abstract class).- 抽象类的重要特征:不能定义抽象类型的对象,抽象类只能作为其他类的基类,不能用来声明对象。- 抽象类可以用来声明指针或者引用,并以此支持运行时对态。//这
阅读全文
摘要:虚函数是指在基类中使用了vitual申明,并且在一个或多个派生类中被重新定义的函数。-> 每个派生类可以拥有自己的虚函数定义。- C++根据指针指向对象的类型来决定调用虚函数的哪个定义,这种定义实在运行时作出的。- 当虚函数在派生类中重新定义时,关键字virtual 不需要重复。(重复也不是错误) ;虚函数的继承: 无论经过多少层的继承函数,都是虚函数。- 包含虚函数的类被称为多态类。 ;虚函数+继承,使C++支持运行多态.(Polymorphism)#include <iostream>using namespace std;class base{public: virtu
阅读全文
摘要:通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类(base class),又称为父类。由已存在的类派生出的新类称为派生类(derived class),又称为子类。继承的通用形式:class derived-class:access base-class{ //}access 是可选的,- 默认的话,是private (派生类是class). 或 public (派生类是struct).- 如果使用的话,必须是 public,private 或 protected.基类的访问控制#in
阅读全文
摘要:首先要理解在C++中将一个对象的值赋给另一个对象有两种不同的方法。第一种方法是赋值(Assignment),第二种时初始化(Initialization).初始化用于以下3种情况:(1)当一个对象副本被作为参数传递给函数时。(2)当一个对象被另一个对象显式地初始化(explicitly initialize)时,例如在对象的声明(declaration)中。(3)当创建一个临时对象时(作为返回值)复制构造函数只能用于初始化,不能用于赋值计算。通用形式:classname (const classname &obj){ //..}#include <iostream>#inc
阅读全文
摘要:友元函数是指:虽然不是类成员却能够访问类的所有成员的函数。- 如果将一个非成员函数声明为类的友员,那么这个函数可以访问类的私有成员。- 关键字friend使一个非成员函数能够访问类的私有成员。#include <iostream>using namespace std;class myclass{ int a,b;public: myclass(int i,int j){ a=i; b=j; } friend int sum(myclass x); //sum()是myclass类的友元函数。};int sum(myclass x){ //sum()不是任何类的成员函数。 retu
阅读全文
摘要:使用内联函数的时候,编译器并不是直接调用函数而是展开内联函数的代码并将其插入到程序代码中。- 提高程序运行效率。(内联函数的代码是被展开,而不是被调用)- 编译器不会为包含选择/循环/递归的函数产生代码。(不支持switch,while 等)- 内联函数不允许含有static类型的变量创建内联函数:方法一: 使用 inline 修饰符class myclass{ int i;public: int get_i(); void put_i(int k);};inline int myclass::get_i(){ return i;}inline void myclass::put_i(int
阅读全文
摘要:通过构造函数,使对象在创建时就可以对自身进行初始化。- 构造函数名和类名相同。- 构造函数是没有返回类型的。(C++中,不需要返回值. 用 void 返回类型也不行)class queue{ int q[20]; int front,rear;public: queue(); //构造函数 void qput(int i); int qget():};queue::queue(){ front=rear=0; cout<<"Queue is initialized.\n";}通过析构函数来销毁对象。- 析构函数的名和类名相同,但是多了个~(取反)符号。- 也没有
阅读全文
摘要:创建一个队列类(Queue, FIFO)声明:class queue{ int q[20]; int front,rear; public: void init(); void qput(int i); int qget();};成员变量:q[], front , rear - 默认的情况下是私有的(private): 只能被queue类的成员访问.成员函数: init(), qput(); qget();- public: 可以被程序中的其他函数访问.- 要实现成员函数,需要使用运算符:: (作用域解析运算符)告诉成员函数是属于该类的。void queue::qput(int i){ ...
阅读全文
1