![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 64
狮子小宝
这个作者很懒,什么都没留下…
展开
-
c++自增自减问题 自增自减运算符
<br />在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。变量i被称为“计数器”,用来记录完成某一操作的次数。C语言为这种计数器操作提供了两个更为简洁的运算符,即++和--,分别叫做自增运算符和自减运算符。它们是从右向左结合的一元算术运算符,优先级为2。学习和应用这两个运算符时应注意以下几点:<br />1 注意表达式的值和变量值的区别<br /> 以自增运算符为例,当自增运算符++作用于一个变量时,例如:当i=3时++i这个算术表达式的值为4,同时变量i的值也由原来的3改变为转载 2011-03-25 10:51:00 · 1305 阅读 · 0 评论 -
c++中的私有构造函数
<br /><br />一般构造函数不是私有或者保护成员,但构造函数可以使私有成员函数,在一些特殊的场合,会把构造函数定义为私有或者保护成员。<br /><br />C++类的构造函数一般不应该是私有函数,因为私有函数不能被其他类或者全局函数所使用。而创建C++实例需要调用构造函数。<br /><br />所以如果构造函数是私有函数的话,除了类自己的方法之外,其他类不能构造这个类的实例。一般来说,类做出来就是让其他类使用的,而使用一个类必须先构造它的实例。所以一般情况下,构造函数如果是私有函数,其他类要使用原创 2011-05-12 17:50:00 · 1122 阅读 · 0 评论 -
c++ 子类父类 的构造函数调用顺序
<br />先调用基类的构造函数,再调用派生类的构造函数就像盖楼的时候先从地基开始,然后第一层,第二层。。。如果是析构,那么先调用派生类的析构函数,再调用基类的析构函数就像拆楼的时候想从最高层开始拆,然后往下一直到第一层转载 2011-05-17 17:52:00 · 1769 阅读 · 0 评论 -
在子类中调用父类的带参数的构造函数
<br /> 下面我们修改一下animal类的构造函数,增加两个参数height和weight,分别表示动物的高度和重量。代码如例2-13所示。<br /> 例2-13<br /> #include <iostream.h><br /> class animal<br /> {<br /> public:<br /> animal(int height, int weight)<br /> {<br /> cout<<"animal construct"<<endl;<转载 2011-05-17 20:23:00 · 1138 阅读 · 0 评论 -
实例名
<br />1 服务器 "." ---"AAA"--- "AAA/SQLEXPRESS" 三个的什么区别?<br /> .或(local)表示与本机同名的服务器与"AAA"相同<br /> "AAA/SQLEXPRESS" 是机上的第二个sql server 服务原创 2011-05-20 21:17:00 · 867 阅读 · 0 评论 -
C/C++头文件一览
<br /><br />C/C++头文件一览<br />详细介绍:http://docs.google.com/View?id=ds6nrv6_7dhrgn6hj<br />C、传统 C++<br />#include <assert.h> //设定插入点<br />#include <ctype.h> //字符处理<br />#include <errno.h> //定义错误码<br />#include <float.h> //浮点数处理<br />#include <fs转载 2011-05-26 21:17:00 · 805 阅读 · 0 评论 -
深入剖析C++重载函数的应用
<br /><br />重载函数(overloaded function)是C++支持的一种特殊函数,C++编译器对函数重载的判断更是C++语言中最复杂的内容之一<br /> 首先我们先明确一下重载函数的定义:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且来区分函数的一种特殊的函数。<br /> 您也许要问,函数为什么要重载呢?何时应该选择函数重载(function overloading),何时又不呢?这也是我要在下面介绍的。<br /> 当将要定义一组函数,使它们原创 2011-04-07 00:24:00 · 577 阅读 · 0 评论 -
C++ 几种对象数组初始化(带参数的构造函数)
<br />class R<br />{<br />public: R ( int r1, int r2) : R1(r1),R2(r2){}<br />private:<br /> int R1, R2;<br />};void main()<br />{<br />e.g 1<br /> vector< R*> r;<br /> for(int i=0; i<5; i++)<br /> r.push_back( new R(i,i+1));e.g 2<br /> R *r[5];<br原创 2011-05-25 20:27:00 · 7068 阅读 · 0 评论 -
类对象数组初始化(三种方法)
<br /><br />参考自《More Effective C++中文版》<br /> 类对象数组初始化<br /> 如有一个如下类:<br /> class EquipmentPiece {<br /> private:<br /> int IDNumber;<br /> public:<br /> EquipmentPiece(int IDNumber) : IDNumber(IDNumber) {};<br /> };<br /> <b转载 2011-05-25 23:10:00 · 10287 阅读 · 0 评论 -
C++命名空间
在学习本书前面各章时,读者已经多次看到在程序中用了以下语句:using namespace std; 这就是使用了命名空间std。在本讲中将对它作较详细的介绍。一、 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。 在C语言中定义了3个层次的作用域,即文件(编译单元)、函数和原创 2011-06-05 23:53:00 · 565 阅读 · 0 评论 -
C++中Static作用和使用方法
1、什么是static? static 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性。2、为什么要引入static? 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,大家知道,函数在栈上分配的空间在此函数执行结束时会释放掉,这样就产生了一个问题: 如果想将函数中此变量的值保存至下一次调用时,如何实现? 最容易想到的方法是定义一转载 2011-06-06 01:04:00 · 573 阅读 · 0 评论 -
static const、static、const成员
类的statci数据成员就是存在唯一拷的成员,不像其他成员那样在每个对象中都有一个拷贝。因此,不需要特定的对象就可以访问static成员。当然如果statci是public性质的成员,也可以通过对象访问。 static成员可以用于减少全局名字的数量,并且把这个变量的逻辑附属关系现定在某个类中,而且还可以实现名字的访问控制,因此可以防止对全局名称空间的污染,使得同时使用多个库变得可能转载 2011-06-06 01:07:00 · 674 阅读 · 0 评论 -
C++类中的静态成员变量和静态成员函数的作用
数据成员可以分静态变量、非静态变量两种.静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过原创 2011-06-06 17:23:00 · 1024 阅读 · 0 评论 -
析构函数 管理指针成员
析构函数就是这样的一个特殊函数,它可以完成所需的资源回收,作为类构造函数的补充撤销类对象时会自动调用析构函数 动态分配的对象只有在指向该对象的指针被删除时才撤销 当对象的引用或指针超出作用域时,不会运行析构函数,只有删除指向动态分配对象的指针或实际对象(而不是对象的引用)超出作用域时,才会运行析构函数 撤销一个容器(不管是标准库容器还是内置数组)时,也会运行容器转载 2011-06-08 23:11:00 · 1017 阅读 · 0 评论 -
有关析构函数
当对象的引用或指针超出作用域时,不会运行析构函数,只有删除指向动态分配对象的指针或实际对象(而不是对象的引用)超出作用域是,才会运行析构函数转载 2011-06-08 23:12:00 · 564 阅读 · 0 评论 -
c++中关于return的用法总结
return是C++预定义的语句,它提供了种植函数执行的一种放大。当return语句提供了一个值时,这个值就成为函数的返回值. turn,有必要提及主函数的定义。很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着转载 2011-06-15 17:21:00 · 1875 阅读 · 0 评论 -
#ifndef 和#define
#ifndef xxx//如果没有定义xxx#define xxx//定义xxx#endif //结束如果这个用法主要是在头文件中,主要是为了防止类重复的include,所以在类的头文件之前加上前面两个,用类名替代xxx,在最后加上最后一句。--------------------------------------------------另,谢谢楼下的补充,不过有原创 2011-06-22 20:14:00 · 904 阅读 · 0 评论 -
__declspec,__cdecl,__stdcall都是什么意思
__cdecl和__stdcall都是函数调用规范(还有一个__fastcall),规定了参数出入栈的顺序和方法,如果只用VC编程的话可以不用关心,但是要在C++和Pascal等其他语言通信的时候就要注意了,只有用相同的方法才能够调用成功.另外,像printf这样接受可变个数参数的函数只有用cdecl才能够实现. __declspec主要是用于说明DLL的引出函数的,在某些情况下用__de原创 2011-06-27 16:15:00 · 1196 阅读 · 0 评论 -
VS_2003 打开文件项目历史记录删除
<br /><br />当一个打开过的解决方案不存在时,VS_2008会询问用户是否删除历史记录,但是VS_2003却不会询问,导致历史记录越来越多,其实还是有办法删除的,只是需要在注册表里删除,下面是注册表路径,此方法对VS所有系列通用。<br />1.删除最近打开的文件<br />HKEY_CURRENT_USER/Software/Microsoft/VisualStudio/8.0/FileMRUList ,在右边删除相应键值。<br />2.删除最近打开的项目<br />HKEY_CURRENT_原创 2011-05-01 20:53:00 · 1794 阅读 · 0 评论 -
运行计时
GetTickCount()就能精确到毫秒 DWORD oldTime, curTime; oldTime = GetTickCount(); ... //运行程序 ... newTime = GetTickCount(); 运行时间 = newTime - oldTime; //毫秒原创 2011-06-27 10:48:00 · 838 阅读 · 0 评论 -
VC GetTickCount ()函数
在VC++6.0平台下如何精确计算程序运行时间? 不太可能 计算可以通过 1。GetTickCount来做,精确到ms gettickcount() yourprogam() gettickcount() - 做差在 C/C++ 程序中常用 time( ) 来获取系统时间,但它是以秒为单位的,一需要小于1秒的时间间隔或者精度高于1秒的时间时就不再适用。原创 2011-06-27 10:50:00 · 9915 阅读 · 0 评论 -
各种数据类型的长度
DWORD是双字类型 4个字节,API函数中有很多参数和返回值是DWORD的 win32编程环境下,用32位的类型很多------------------------------------------------------DWORD就是32bit的unsigned long---------------------------------------------------原创 2011-06-27 10:46:00 · 1532 阅读 · 0 评论 -
opencv2.x配置方法
<br />本文档适用版本为OpenCV 2.0/2.1和Visual C++ 2008 Express,如使用其他版本,仅供参考。<br />OpenCV2.0官方安装文档,请参考:http://opencv.willowgarage.com/wiki/InstallGuide安装所需要的软件<br />安装VC++ 2008 Express<br />Visual C++ Express是微软推出的一款免费集成开发环境,如果你没有足够资金购买Visual C++,你可以使用Visual C++ Expr转载 2011-05-06 20:32:00 · 901 阅读 · 0 评论 -
switch与if的区别(1)
【转】switch与if的区别如果纯粹比较数字或字符,建议使用switch,因为它只会在一开始的switch括号中取出变量值一次,然后将这个值与下面所设定的case比较,但如果使用if,每次遇到条件式时,都要取出变量值,效率的差异就在这儿。例如:if(a == 1) //... else if(a == 2) //... else if(a == 3) //...这个程序片段在最差的状况下,也就是转载 2011-07-02 19:45:19 · 5729 阅读 · 3 评论 -
C language 使用if…else if…else语句实现多分支选择结构*(语法结构同C#)
有时必须判定多个条件以便决定执行什么操作。在这种情况下就要使用if…else if…else语句。其声明语法如下:if(表达式一){语句块一}//符合表达式执行的代码else if(表达式二){语句块二}//符合表达式执行的代码else if(表达式三){语句块三}//符合表达式执行的代码……else {语句块n}//符合表达式执行的代码执行过程说明如下。(1)首先判断表达式1,如果其值为true原创 2011-07-02 23:02:01 · 5663 阅读 · 1 评论 -
VC STL标准库容器类
标准库中的容器分为顺序容器和关联容器。顺序容器(sequential container)内的元素按其位置存储和访问,顾名思义,这些内部元素是顺序存放的;顺序容器内的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。而关联容器的元素按键(key)排序转载 2011-07-04 17:55:18 · 2074 阅读 · 2 评论 -
如何在VS中添加“生成解决方案”,“重新生成解决方案”,“清理解决方案”
原来在【工具】设置过【导入和导出设置】;原创 2011-07-11 12:08:56 · 2003 阅读 · 0 评论 -
atof
double atof ( const char * str );Convert string to doubleParses the C string str interpreting its content as a floating point number and ret转载 2011-07-24 10:56:18 · 957 阅读 · 0 评论 -
atof()
- + atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。转载 2011-07-24 10:44:29 · 920 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include using namespace std;class CExample转载 2011-07-26 10:00:25 · 514 阅读 · 0 评论 -
C++ 类的 静态成员 (static) 静态成员函数 Static
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。静态数据成员在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的转载 2011-07-18 14:16:58 · 993 阅读 · 0 评论 -
c++中的局部变量和全局变量重名时取值问题
局部变量在使用时会屏蔽全局变量。要用全局变量,需要使用"::".局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的转载 2011-07-19 15:36:23 · 1147 阅读 · 0 评论 -
]内存分配 知识,全局,局部,静态变量
内存分配 知识,全局,局部,静态变量预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放转载 2011-07-28 19:30:54 · 649 阅读 · 0 评论 -
C++变量在内存中的存储区域
01 #include 0203 #include 04 using namespace std;05 int a = 0; // Initialization Area of Overall06 char *p1; // Not Initialization Area of O转载 2011-07-28 19:31:27 · 905 阅读 · 0 评论 -
关于 debug assertion failed, file:dlgdata.cpp,line"44 错误
问题原因:没有找到这个相应控件类型 ! 一般有三种情况:一是控件ID不存在,二是控件未创建,三是控件的类型不对 看看DoDataExchange函数 我遇到这种情况是 对话框程序运行不起来,弹不出对话框。 后来仔细查看转载 2011-08-01 09:32:37 · 1679 阅读 · 0 评论 -
更改单文档应用程序主框架Frame的标题
方法一:BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) //重写这个类{// TODO: Modify the Window class or styles here by modifying// t转载 2011-08-02 17:21:04 · 1297 阅读 · 0 评论 -
C语言详解 - 枚举类型
注:以下全部代码的执行环境为VC++ 6.0在程序中,可能需要为某些整数定义一个别名,我们可以利用预处理指令#define来完成这项工作,您的代码可能是:#define MON 1#define TUE 2#define WED 3#defin转载 2011-08-03 08:55:07 · 639 阅读 · 0 评论 -
C++ 运算符优先级列表
PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access转载 2011-08-31 20:41:12 · 502 阅读 · 0 评论 -
C++运算符优先级
优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名 [ 常量表达式 ]左到右()圆括号(表达式)转载 2011-08-31 20:50:20 · 496 阅读 · 0 评论 -
system("pause");
#include转载 2011-09-01 09:29:09 · 872 阅读 · 0 评论