C++
沙-粒
这个作者很懒,什么都没留下…
展开
-
定义模板时typename和class的区别
在c++Template中很多地方都用到了typename与class这两个关键字,而且好像可以替换,是不是这两个关键字完全一样呢?相信学习C++的人对class这个关键字都非常明白,class用于定义类,在模板引入c++后,最初定义模板的方法为: template...... 在这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typ原创 2014-04-23 15:25:30 · 1242 阅读 · 0 评论 -
c++模板类
如何组织编写模板程序前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。我在5年前开始使用模板,那时我看到了MFC的容器类。直到去年我还没有必要自己编写模板类。可是在我需要自己编写模板类时,我首先遇到的事实却转载 2014-04-23 14:56:10 · 638 阅读 · 0 评论 -
C++ string 成员函数汇总
string类的构造函数:转载 2014-04-27 11:54:29 · 587 阅读 · 0 评论 -
MFC中无法显示字符串
CWnd::MessageBoxW”: 不能将参数 1 从“const char [16]”转换为“LPCTSTR 2011-06-30 10:27:50| 分类: VC学习|举报|字号 订阅在外面用vs2005编写mfc程序的时候经常要MessageBox("提示信息")函数,在vc6.0是没有问题的,但是在vs2005却会有下面的提示:e转载 2014-05-31 09:48:28 · 1528 阅读 · 0 评论 -
Qt读写xml文件实例
//-------------------------------------------------------------------------//写入数据到xml文件bool CWinSystemBackup::WrInfoToXML(const QString &sFileName){ //设置进度 m_pProgressBar->setValue(5);原创 2014-08-29 10:57:40 · 2098 阅读 · 0 评论 -
C++中的继承与虚函数各种概念
虚继承与一般继承虚继承和一般的继承不同,一般的继承,在目前大多数的C++编译器实现的对象模型中,派生类对象会直接包含基类对象的字段。而虚继承的情况,派生类对象不会直接包含基类对象的字段,而是通过一个间接的指针去存取基类对象中的字段。 继承的特性 继承是面向对象中引入的重要特性之一,它的一个重要的特点就是子类是父类,父类不是子类。也就是说: 1. 如果基类指针指向子类对象(pb转载 2015-01-13 15:00:55 · 530 阅读 · 0 评论 -
Sizeof与Strlen的区别与联系
Sizeof与Strlen的区别与联系一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof转载 2015-03-14 21:18:47 · 440 阅读 · 0 评论 -
C语言函数指针基础
函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具。本文将从C语言函数指针的基础开始介绍,再结合一些简单的用法和关于函数名称和地址的趣闻。在最后,本文给出一种简单的方式来看待函数指针,让你对其用法有一个更清晰的理解。 函数指针和一个简单的函数我们从一个非常简单的”Hello World“函数入手,来见识一下怎样创建一个函数指针。1转载 2015-03-01 16:05:44 · 460 阅读 · 0 评论 -
50个C/C++面试题
面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。 说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。 面试题2:写出bool 、int、 float、转载 2015-04-11 22:14:33 · 10856 阅读 · 2 评论 -
C++多态
1、多态引入---->数据的类型 我们知道,不论我们定义一个怎么样的数据或者对象,我们都不会忘了它的类型,那么类型到底充当了一个怎样的角色呢? 数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。变量是用来存储值的所在处,它具有名字和数据类型。变量的数据类型决定了如何将代表这些值的位存储到计算机的内存中。在我看来转载 2016-11-04 10:35:29 · 313 阅读 · 0 评论 -
C++STL概述
C++STL概述STL提供三种类型的组件: 容器、迭代器和算法。它们都支持泛型程序设计标准。容器主要有两类:顺序容器和关联容器(vector、list、deque和string等)是一系列元素的有序集合。关联容器(set、multiset、map和multimap)包含查找元素的键值。迭代器的作用是遍历容器。STL算法库包含四类算法:排序算法、不可变序算法、变序算法转载 2014-04-27 10:54:53 · 532 阅读 · 0 评论 -
C++ Deque成员函数
Deque成员函数函数描述c.assign(beg,end)c.assign(n,elem)将[beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。c.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_range。c.back()传回最后一个转载 2014-04-27 16:02:19 · 2085 阅读 · 0 评论 -
C++ const 的全面总结
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 一、Const作用 如下表所示:No.作用说明参考代码转载 2014-05-13 23:34:44 · 541 阅读 · 0 评论 -
throw()使用小结
为什么要加一个throw()到你的函数中? 这是异常规范,只会出现在声明函数中,表示这个函数可能抛出任何类型的异常 void GetTag() throw(int);表示只抛出int类型异常 void GetTag() throw(int,char);表示抛出in,char类型异常 void GetTag() throw();表示不会抛出任何类型异常 void GetTag()转载 2014-04-23 14:59:06 · 823 阅读 · 0 评论 -
C++ STL
迭代器(iterator) 个人理解就是把所有和迭代有关的东西给抽象出来的,不管是数组的下标,指针,for里面的、list里面的、vector里面的,抽象一下变成了iterator 1 #include 2 #include 3 4 using namespace std; 5 6 int main() 7 { 8 vectorint> v;转载 2014-04-22 20:14:00 · 1014 阅读 · 1 评论 -
auto_ptr解析
auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个转载 2014-04-23 14:13:07 · 843 阅读 · 0 评论 -
c++读写文件
掌握文本文件读写的方法了解二进制文件的读写方法 C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流 //创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ ofstream f1("d:\\原创 2014-05-14 16:03:57 · 745 阅读 · 0 评论 -
函数模板和类模板 模版特化
模板 模板(template)是一个将数据类型参化的工具,它提供了一种将代码与数据类相脱离的机制,即代码不受具体的数据类型的影响。模板分为函数模板和类模板两种。 (1)函数模板 函数模板是一种不说明某些参数的数据类型的函数。例如,下面定义了一个可对任何类型变量进行操作(求绝对值)的函数模板: template class T> //或写成: te转载 2014-04-23 15:15:53 · 1117 阅读 · 0 评论 -
浅析C++继承与多态
当我们进一步研究类与对象的时候,难免的就要考虑到类本身的一些特点以及类与其它类之间的关系。在本专题开始之前,我们已经接触到像一个类对象作为另一个类成员的嵌套关系了。本专题,我们就专心的研究一下类与类之间的继承关系和其类本身的特点。 我们知道,类与对象的概念是来自于对现实事物的模拟,就像孩子用于其父母的一些特征,不论是木桌还是石桌都有桌子的特点。同样,类与类之间自然的也应该拥有转载 2014-04-24 21:09:31 · 538 阅读 · 0 评论 -
vector的成员函数解析
vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问元素,还可以使用指针的偏移方式访问,和常规数组不一样的是,vector能够自动存储元素,可以自动增长或缩小存储空间,vector的优点:1. 可以使用下标访问个别的元素2.转载 2014-04-27 11:08:15 · 628 阅读 · 0 评论 -
static用法小结
static用法小结static关键字是C, C++中都存在的关键字, 它主要有三种使用方式, 其中前两种只指在C语言中使用, 第三种在C++中使用(C,C++中具体细微操作不尽相同, 本文以C++为准).(1)局部静态变量(2)外部静态变量/函数(3)静态数据成员/成员函数下面就这三种使用方式及注意事项分别说明一、局部静态变量在C/C++中, 局部变量按照存储转载 2014-05-13 23:17:16 · 467 阅读 · 0 评论 -
STL map 的基本成员函数
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint转载 2014-04-27 16:06:11 · 632 阅读 · 0 评论 -
Windows 临界区,内核事件,互斥量,信号量
Windows 临界区,内核事件,互斥量,信号量。临界区,内核事件,互斥量,信号量,都能完成线程的同步,在这里把他们各自的函数调用,结构定义,以及适用情况做一个总结。临界区:适用范围:它只能同步一个进程中的线程,不能跨进程同步。一般用它来做单个进程内的代码快同步,效率比较高。相关结构:CRITICAL_SECTION _critical相关方法:/转载 2016-11-08 10:57:03 · 523 阅读 · 0 评论