摘要:转自:http://www.cppblog.com/zerolee/archive/2010/11/03/132344.html类模板的模板友元函数定义有2种方式:1. 将友元模板函数直接定义在类模板中。这种方式比较简单直接。2. 将友元模板函数声明在类模板中,定义在类模板之外。这种方式的写法,如果不小心,通常会出现编译没问题,链接时无法解析的错误。以下是一个简单的正确的例子:1#include<iostream>2#include<vector>34template<typenameT>5classNumber;67template<typename
阅读全文
摘要://欢迎大家拍砖头给意见啊,大家的批评是我学习的动力,谢谢啦#ifndef _List_H_#define _List_H_#include "stdafx.h"template<class T>class list;template<class ElemType> class listNode{public: listNode(ElemType data = 0):_data(data),_next(NULL){} ~listNode(){} friend class list<ElemType>; ElemType _data; li
阅读全文
摘要:原文地址:http://www.coderess.com/?p=55什么是复制构造?复制构造是类或结构体的一种特殊的拷贝已存在实例构造函数。根据C++标准,复制构造函数可以有以下几种形式:注意不要写成以下形式,尽管它们也能够实现同样的事:什么时候需要写自己的复制构造函数?首先,你需要明白假如你没声明一个复制构造函数,编译器会给你提供默认的构造函数。这个默认的构造函数能智能地(member-wise...
阅读全文
摘要:原文:http://www.coderess.com/?p=43(我的另外一个博客)本文主要包括以下内容: 1、简单理解Windows的消息 2、一段简单的Win32消息循环程序 3、进一步深入理解Windows消息 4、队列消息和非队列消息 5、WM_COMMAND和WM_NOTIFY 1、简单理解Windows的消息 消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。 举个例子来说,鼠标单击某应用程序的一个按钮。这时,Windows(操作系统)给应用程序发送这个消息,通知应用程序该按钮被点击,应用程序将进行相应反应。 消息一般用一个32位的数来标识,这个数唯一地标识这个
阅读全文
摘要:下列简要介绍关于程序自启动的几个操作注册表常用API函数: 以下着重说明RegCreateKeyEx的几个重要参数:__in HKEY hKey 指定给父键句柄或者根目录 :HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS __in LPCTSTR lpSubK...
阅读全文
摘要:1、问题的提出: 在Windows3.x中,不存在WM_NOTIFY消息,控制子窗口的通知消息同菜单的命令消息及加速键消息一样,均使用WM_COMMAND来发送,此时,根据WM_COMMAND消息传递的做法,可知道含有如下的传递结构: wParam high-order : Notify Code :(如TTN_NEEDTEXT) wParam low-order : ControlID lPar...
阅读全文
摘要:什么是缓冲区缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。为什么要引入缓冲区我们为什么要引入缓冲区呢?比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这...
阅读全文
摘要:下面是一个《Teach Yourself C++ in 21 Days》的流程图,请各位程序员同仁认真领会。如果有必要,你可以查看这个图书以作参照:http://www.china-pub.com/27043看完上面这个图片,我在想,我学习C++有12年了,好像C++也没有学得特别懂,看到STL和泛型,还是很头大。不过,我应该去考虑研究量子物理和生物化学,这样,我才能重返98年杀掉还在大学的我,然...
阅读全文
摘要:原文出处:Simple File I/O Using C++序论 我曾发表过文件输入输出的文章,现在觉得有必要再写一点。文件 I/O 在C++中比烤蛋糕简单多了。 在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。一、ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,...
阅读全文
摘要:1.有些时候我们需要用容器来保存因继承而相关的对象(摘自C++Primer)也就是一个容器里面既有基类对象和派生类对象,但是对象不是多态的,这就出现一些问题:a.比如我们把这个容器设置成派生类类型B,则当我们保存基类对象时候派生类部分的成员是没有初始化的,后果就是当这个对象调用派生类B的某些成员时候不知道会调用了哪些内存数据;b.假如都统一设成基类对象A,则所有的派生类对象都截断了派生部分的数据。...
阅读全文
摘要:1.复制构造函数和赋值操作符 在编写良好类的习惯文中知道了什么时候需要编写自己的复制构造函数、赋值操作符、析构函数后,当基类中需要这几个的时候,派生类当中就应该显式调用基类的复制构造函数和赋值操作符。如下:值得一提的是 A(v)编译器会进行类类型转换;还有:不能写成这样:这样编译器会提示 形参v重定义了;至于原因我大概测试了一下,应该是在构造B的时候,编译器会调用A的默认构造函数,然后再{}进行A...
阅读全文
摘要:要触发动态绑定必须满足两个条件:1.只有指定为虚函数的成员函数才能进行动态绑定2.必须通过基类类型的引用或者指针进行函数调用-----摘自《C++ Primer》对于第二点,我开始产生这样的疑问:Q1:为什么只能是引用或指针,直接对象调用不可以吗?Q2:为什么只能通过基类的引用或指针,而不能派生类的指针或引用? A1:通过对象来调用,当赋值时候派生类对象赋值给基类时候,它们发生了类型转换了,当然不...
阅读全文
摘要:1.重载操作符跟重载函数一样的,只不过要区分成员的和非成员的成员的重载操作符,第一个参数默认了是this 指针形参,所以重载操作符作为成员函数,都应该是右操作符比如:上述一个成员,一个非成员重载方式,调用相应如下:s1<<std::cout; // 调用的是作为成员函数的重载操作符std::cout<<s2; //调用的是友原函数2.至于返回值,值得注意的地方是:何时返回类...
阅读全文