
C++学习
任薛纪
这个作者很懒,什么都没留下…
展开
-
C++ 获取文件夹下的所有文件名
获取文件夹下所有的文件名是changy转载 2014-07-05 11:17:45 · 60059 阅读 · 4 评论 -
构造函数初始化
与任何其他函数一样,构造函数具有名字、形参表和函数体。与其他函数不同的是,构造函数也可以包含一个构造函数初始化列表:// recommended way to write constructors using a constructorinitializerSales_item::Sales_item(const string &book):isbn(book), units_原创 2014-08-06 16:02:24 · 1133 阅读 · 0 评论 -
类成员的显式初始化
尽管大多数对象可以通过运行适当的构造函数进行初始化,但是直接初始化简单的非抽象类的数据成员仍是可能的。对于没有定义构造函数并且其全体数据成员均为 public 的类,可以采用与初始化数组元素相同的方式初始化其成员:struct Data {int ival;char *ptr;};// val1.ival = 0; val1.ptr = 0Data val1 = { 0,原创 2014-08-07 07:39:06 · 1265 阅读 · 0 评论 -
关于C++中的友元函数的总结
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元转载 2014-08-07 11:24:10 · 460 阅读 · 0 评论 -
友元
在某些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问,这是很方便做到的。例如,被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。这些操作符不可能为类的成员,具体原因参见第十四章。然而,尽管不是类的成员,它们仍是类的“接口的组成部分”。友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类。友元的声明以关键字 friend 开始。它只能出现在类原创 2014-08-07 11:07:05 · 516 阅读 · 0 评论 -
默认构造函数
只要定义一个对象时没有提供初始化式,就使用默认构造函数。为所有形参提供默认实参的构造函数也定义了默认构造函数。原创 2014-08-06 17:03:47 · 742 阅读 · 0 评论 -
深入理解C++中的mutable关键字
原文:http://dev.yesky.com/393/3007393.shtml转载 2014-08-06 09:00:36 · 399 阅读 · 0 评论 -
类的用法
类声明与类定义原创 2014-08-06 07:26:07 · 560 阅读 · 0 评论 -
初始化列表
原文:http://baike.baidu.com/view/8331909.htm?fr=aladdin转载 2014-08-06 10:04:29 · 469 阅读 · 0 评论 -
类作用域
每个类都定义了自己的新作用域和唯一的类型。在类的定义体内声明类成员,将成员名引入类的作用域。两个不同的类具有两个的类作用域。即使两个类具有完全相同的成员列表,它们也是不同的类型。每个类的成员不同于任何其他类(或任何其他作用域)的成员。原创 2014-08-06 09:40:30 · 4545 阅读 · 0 评论 -
类与抽象数据
类类型常被称为抽象数据类型(abstract data types)。抽象数据类型将数据(即状态)和作用于状态的操作视为一个单元。我们可以抽象地考虑类该做什么,而无须知道类如何去完成这些操作。抽象数据类型是面向对象编程和泛型编程的基础。原创 2014-08-06 06:51:54 · 1080 阅读 · 0 评论 -
使用预处理器进行调试
C++ 程序员有时也会使用类似的技术有条件地执行用于调试的代码。这种想法是:程序所包含的调试代码仅在开发过程中执行。当应用程序已经完成,并且准备提交时,就会将调试代码关闭。可使用 NDEBUG 预处理变量实现有条件的调试代码:int main(){#ifndef NDEBUGcerr #endif// ...如果 NDEBUG 未定义,那么程序就会将信息写到 cer原创 2014-08-04 16:12:32 · 605 阅读 · 0 评论 -
static 类成员
对于特定类类型的全体对象而言,访问一个全局对象有时是必要的。也许,在程序的任意点需要统计已创建的特定类类型对象的数量;或者,全局对象可能是指向类的错误处理例程的一个指针;或者,它是指向类类型对象的内在自由存储区的一个指针。原创 2014-08-09 08:31:27 · 771 阅读 · 0 评论 -
赋值操作符
与类要控制初始化对象的方式一样,类也定义了该类型对象赋值时会发生什么:Sales_item trans, accum;trans = accum;与复制构造函数一样,如果类没有定义自己的赋值操作符,则编译器会合成一个。原创 2014-08-10 08:55:44 · 835 阅读 · 0 评论 -
C#与C/C++之别一
内联一些开发人员可能会担心,在上一节中,我们列举了许多情况,其中标准C++编码方式导致了大材小用,例如,通过属性访问字段,而不是直接访问字段。这些额外的函数调用是否会增加系统开销,导致性能下降?其实,不需要担心这种编程方式会在唧中带来性能损失。引玳码会编译为IL,然后在运行时JIT编译为本地可执行代码。Ⅲ 编译器可生成高度优化的代码,并在适当的时候随意地内联代码(即,用内联代码来替代函数调用)原创 2014-10-11 10:58:10 · 910 阅读 · 0 评论 -
堆,栈,堆栈的区别 .
一个程序一般分为3段:text段,data段,bss段text段:就是放程序代码的,编译时确定,只读,data段:存放在编译阶段(而非运行时)就能确定的数据,可读可写就是通常所说的静态存储区,赋了初值的全局变量和静态变量存放在这个区域,常量也存放在这个区域bss段:定义而没有赋初值的全局变量和静态变量,放在这个区域 这个够不够清楚呢?堆栈就是栈的简称。堆和栈的区别一、预备知识—转载 2014-10-09 08:43:26 · 514 阅读 · 0 评论 -
直方图匹配方法
一、直方图匹配方法对比直方图相似性的方法有四种:(1) 相关度 (2) 卡方系数 (3) 相交系数 (4) 巴氏距离 在快速但是不怎么准确匹配的情况下,Intersection方法的效果好,而在慢速但较精确的情况下,用卡转载 2014-08-16 10:28:58 · 3621 阅读 · 0 评论 -
随机抽样一致性算法(RANSAC)
作者:王先荣 本文翻译自维基百科,英文原文地址是:http://en.wikipedia.org/wiki/ransac,如果您英语不错,建议您直接查看原文。 RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写。它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计数学模型的参数。它是一种不确定的算法——它有一定的概率得出一个合理的结果;转载 2014-09-10 16:45:08 · 540 阅读 · 0 评论 -
析构函数
构造函数的一个用途是自动获取资源。例如,构造函数可以分配一个缓冲区或打开一个文件,在构造函数中分配了资源之后,需要一个对应操作自动回收或释放资源。析构函数就是这样的一个特殊函数,它可以完成所需的资源回收,作为类构造函数的补充。原创 2014-08-10 09:15:06 · 685 阅读 · 0 评论 -
复制构造函数
当定义一个新类型的时候,需要显式或隐式地指定复制、赋值和撤销该类型的对象时会发生什么——这是通过定义特殊成员:复制构造函数、赋值操作符和析构函数来达到的。如果没有显式定义复制构造函数或赋值操作符,编译器(通常)会为我们定义。原创 2014-08-10 07:19:29 · 692 阅读 · 0 评论 -
算术操作符和关系操作符
一般而言,将算术和关系操作符定义为非成员函数,像下面给出的Sales_item 加法操作符一样:// assumes that both objects refer to the same isbn原创 2014-08-11 09:32:59 · 809 阅读 · 0 评论 -
输出操作符<< 的重载
为了与 IO 标准库一致,操作符应接受 ostream& 作为第一个形参,对类类型 const 对象的引用作为第二个形参,并返回对ostream 形参的引用。原创 2014-08-11 09:01:24 · 624 阅读 · 0 评论 -
重载操作符与转换
C++ 允许我们重定义操作符用于类类型对象时的含义。如果需要,可以像内置转换那样使用类类型转换,将一个类型的对象隐式转换到另一类型。原创 2014-08-10 10:29:37 · 600 阅读 · 0 评论 -
输入操作符>> 的重载
与输出操作符类似,输入操作符的第一个形参是一个引用,指向它要读的流,并且返回的也是对同一个流的引用。它的第二个形参是对要读入的对象的非const 引用,该形参必须为非 const,因为输入操作符的目的是将数据读到这个对象中。更重要但通常重视不够的是,输入和输出操作符有如下区别:输入操作符必须处理错误和文件结束的可能性。原创 2014-08-11 09:12:33 · 769 阅读 · 0 评论 -
重载操作符的设计
设计类的时候,需要记住一些有用的经验原则,可以有助于确定应该提供哪些重载操作符(如果需要提供)。原创 2014-08-11 08:38:02 · 638 阅读 · 0 评论 -
指向函数的指针
函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关:// pf points to function returning bool that takes two const string referencesbool (*pf)(const string &, const string &);这个语句原创 2014-08-05 09:11:14 · 605 阅读 · 0 评论 -
局部对象
在 C++ 语言中,每个名字都有作用域,而每个对象都有生命期。原创 2014-08-05 06:01:14 · 676 阅读 · 0 评论 -
强制类型转换
显式转换也称为强制类型转换(cast),包括以下列名字命名的强制类型转换操作符:static_cast、dynamic_cast、const_cast 和 reinterpret_cast。原创 2014-08-04 13:03:54 · 452 阅读 · 0 评论 -
c++头文件
预处理器变量有两种状态:已定义或未定义。定义预处理器变量和检测其状态所用的预处理器指示不同。#define 指示接受一个名字并定义该名字为预处理器变量。#ifndef 指示检测指定的预处理器变量是否未定义。如果预处理器变量未定义,那么跟在其后的所有指示都被处理,直到出现 #endif原创 2014-08-03 14:25:47 · 489 阅读 · 0 评论 -
C++模板
1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.转载 2014-08-03 06:54:44 · 365 阅读 · 0 评论 -
关于C++中模板中的typename和class的区别比较
C++箴言:理解typename的两个含义问题:在下面的 template declarations(模板声明)中 class 和 typename 有什么不同?template class Widget; // uses "class"template class Widget; // uses "typename" 答案:没什么不同。在声明一个 templat转载 2014-08-03 07:15:21 · 450 阅读 · 0 评论 -
在C#中使用C/C++写的DLL,以及数据转换大全
http://www.soasp.net/FilePage/200804/20080404233928.htmC++ C#=====================================WORD ushortDWORD uintUCHAR int/byte 大部分情况都可以使用转载 2014-06-26 08:29:54 · 1560 阅读 · 0 评论 -
c/c++数据类型转换整理
一、其它数据类型转换为字符串▲短整型(int) itoa(i,temp,10);///将i转换为字符串放入temp中,最后一个数字表示十进制 itoa(i,temp,2); ///按二进制方式转换▲长整型(long) ltoa(l,temp,10);▲浮点数(float,double) 用fcvt可以完成转换,这是MSDN中的例子: in转载 2014-06-26 08:05:43 · 668 阅读 · 0 评论 -
C#调用C++方法,C#使用c++方法返回类或结构体
C#调用C++方法,C#使用c++方法返回类或结构体。1. 在c++中定义结构体,类,处理方法;要给c#调用的方法要加extern "C" __declspec(dllexport) 修饰// CppDll.cpp : Defines the exported functions for the DLL application./转载 2014-06-26 09:26:06 · 790 阅读 · 0 评论 -
CString 操作指南
原著:Joseph M. Newcomer翻译:littleloach原文出处:codeproject:CString Management通过阅读本文你可以学习如何有效地使用 CString。 CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧转载 2014-06-26 08:09:43 · 680 阅读 · 0 评论 -
c/c++读取assic码文件
Keypoint ReadKeypoints(FILE *fp){ int i, j, count = 0, len = 0, col = 0; Keypoint k = NULL, keys = NULL;char buf[128];if (!fp)return NULL;fgets(buf, 128, fp);sscanf(buf,原创 2014-04-29 12:04:55 · 1239 阅读 · 0 评论 -
c/c++命令行的解析方法
int main (int argc, char **argv) argc{ int arg = 0, printusage = 1; Keypoint k1, k2, k; FILE *in1 = 0, *in2 = 0, *out = 0; int count = 0; /* Parse command line argument原创 2014-04-29 11:35:34 · 3683 阅读 · 0 评论 -
C++学习笔记——1
操作系统使用不同的值作为文件结束符。Windows 系统下我们通过键入 control—z——同时键入“ctrl”键和“z”键,来输入文件结束符。Unix 系统中,包括 Mac OS—X 机器,通常用 control—d。原创 2014-04-10 17:37:36 · 523 阅读 · 0 评论 -
C/C++时间函数使用方法
C++对时间的操作也有许多值得大家注意的地方。最近,在技术群中有很多网友也多次问到过C++语言中对时间的操作、获取和显示等等的问题。下面,在这篇文章中,笔者将主要介绍在C/C++中时间和日期的使用方法. 通过学习许多C/C++库,你可以有很多操作、使用时间的方法。但在这之前你需要了解一些“时间”和“日期”的概念,主要有以下几个: Coordina转载 2014-05-06 22:58:32 · 501 阅读 · 0 评论 -
typedef的用法
1.C语言中函数声明和数组声明。函数声明一般是这样: int fun(int, double);对应函数指针(pointer to function)的声明是这样: int (*pf)(int, double);可以这样使用:pf = &fun; //赋值(assignment)操作 (*pf)(5, 8.9);//函数调用操作 也请注意,C原创 2014-08-04 06:35:40 · 612 阅读 · 0 评论