C++学习
文章平均质量分 67
foodvc
In fact , i study food science and engineer, but when i graduated from school, i find my interest in computer , so i decide to study computer as a beginner, those two years ,i devoted my time to computer , including C C# architecture and communication
展开
-
C++应用到C# ref , out
#include "stdafx.h"#include "iostream.h"int factor(int ,int&,int&);void main(){ int number , squard,cubed,error; cout cin>>number; error=factor(number,squard,cubed); if(error==1) { cout }else { cou原创 2008-09-25 15:19:00 · 2170 阅读 · 1 评论 -
c++ 字符串常用处理函数
strcpy(char destination[], const char source[]);strcpy:将字符串source拷贝到字符串destination中。 strcpy函数应用举例 原型:strcpy(char destination[], const char source[]); 功能:将字符串source拷贝到字符串destination中转载 2008-11-28 10:45:00 · 1410 阅读 · 0 评论 -
:string转int,double? (C/C++)
// changstring.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include using namespace std;template void convertFromString(T &, const std::string &);template std::string Convert原创 2008-11-28 14:30:00 · 1855 阅读 · 0 评论 -
C++什么时候用delete
在C#、Java這種managed語言,因為有garbage collection,所以完全不用考慮free()或delete,但在C/C++,有時候要delete的,有時又不用,到底哪些改delete?哪些不用delete呢?簡單的說,若要使用用到heap,就要手動去delete或free()!!那什麼時候會用到heap呢?當你打算使用dynamic allocation時!!更白話一點,就原创 2008-11-28 17:58:00 · 5147 阅读 · 1 评论 -
C++中List 的用法
#include #include #include #include using namespace std; //创建一个list容器的实例LISTINT typedef list LISTINT; //创建一个list容器的实例LISTCHAR typedef list LISTCHAR; void main(void) { //-----------------------转载 2008-12-18 17:03:00 · 2336 阅读 · 1 评论 -
C++ 数据类型转换
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。static原创 2008-12-25 15:13:00 · 761 阅读 · 0 评论 -
C++数据结构-1
#include#include "iostream"using namespace std;template struct Time{ Time(const T& Year=0,const T& Month=0,const T& Day=0 ) { year=Year,month=Month,day=Day; } friend Time* NewDate(T year,T month,T原创 2008-12-25 16:00:00 · 593 阅读 · 0 评论 -
多线程用法-1
初步实例介绍CreateThread的用法:带有参数的用法:#include "windows.h"#include "stdio.h"void Scan(char* str){ printf("%s",str);}void Start(){ char* s="NBA YAO YEAR!/n"; HANDLE hThread=CreateThread(NULL,0,(LPTHREAD_STA原创 2008-12-23 11:30:00 · 938 阅读 · 0 评论 -
C++多线程学习2
// beginthread.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "beginthread.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FIL原创 2008-12-23 13:17:00 · 2168 阅读 · 0 评论 -
VC进行COM编程
我见过很多人学COM,看完一本书后觉得对COM的原理比较了解了,COM也不过如此,可是就是不知道该怎么编程序,我自己也有这种情况,我也是经历了这样的阶段走过来的。要学COM的基本原理,我推荐的书是《COM技术内幕》。但仅看这样的书是远远不够的,我们最终的目的是要学会怎么用COM去编程序,而不是拼命的研究COM本身的机制。所以我个人觉得对COM的基本原理不需要花大量的时间去追根问底,没有必要,是吃力转载 2008-12-23 17:40:00 · 1041 阅读 · 3 评论 -
VC6的IDispatch接口
一、前言 因为自动化(automation)是非常常用、非常有用、非常精彩的一个 COM 功能。由于 WORD、EXCEL 等 OFFICE 软件提供了“宏”的功能,就连我们使用的VC开发环境也提供了“宏”功能,更由于 HTML、ASP、JSP 等都要依靠脚本(Script)的支持,更体现出了自动化接口的重要性。 如果你使用 vc6.0 的开发环境,请继续阅读。转载 2008-12-25 10:36:00 · 1171 阅读 · 1 评论 -
C/C++头文件一览
C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include //定义各种数据类型最值常量#include //定转载 2008-12-26 09:35:00 · 612 阅读 · 0 评论 -
CString,string,char*的综合比较
(一) 概述 string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中; CString(typedef CStringT > CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANSI),wchar_t(unicode),TCH转载 2008-12-26 09:40:00 · 870 阅读 · 0 评论 -
CString在非MFC中应用
CString 是封装的非常不错的一个类,相比于STL的string,它提供了更加丰富的成员方法。虽然在控制台工程中,string基本已经能够完成需要的功能,但是,如果能够偷懒一下的话 ...在Console工程中引用CString方法如下: 1. 工程设置: project/setting/General/中, 把not using mfc改为usimg mfc in a s转载 2008-12-26 09:50:00 · 743 阅读 · 0 评论 -
二、CString、CStringA 和 CStringW
二、CString、CStringA 和 CStringW Visual C++.NET中将CStringT作为ATL和MFC的共享的“一般”字符串类,它有CString、CStringA和CStringW三种形式,分别操作不同字符类型的字符串。这些字符类型是TCHAR、char和wchar_t。TCHAR在Unicode平台中等同于WCHAR(16位Unicode字符),在ANSI中等价于ch转载 2008-12-26 13:57:00 · 11427 阅读 · 2 评论 -
函数指针和C#代理
先看一段C的面向过程的函数指针代码:int max(int x,int y){ return (x>y?x:y);}int min(int x,int y){ return(xy?x:y);}int sub(int x, int y){ return(x+y);}int minus(int x,int y)转载 2008-11-28 09:36:00 · 443 阅读 · 0 评论 -
数据指针探讨3
指针,在C/C++语言中一直是很受宠的;几乎找不到一个不使用指针的C/C++应用。用于存储数据和程序的地址,这是指针的基本功能。用于指向整型数,用整数指针(int*);指向浮点数用浮点数指针(float*);指向结构,用对应的结构指针(struct xxx*);指向任意地址,用无类型指针(void*)。 有时候,我们需要一些通用的指针。在C语言当中,(void*) 可以代表转载 2008-11-27 17:45:00 · 464 阅读 · 0 评论 -
C/C++数组名与指针区别深层探索
1. 引言指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在C 语言的教学过程中也错误得给学生讲解:“数组名就是指针”。很幸运,我的大学老师就是其中之一。时至今日,我日复一日地进行着C/C++项目的开发,而身边还一直充满这样的程序员,他们保留着“数组名就是指针”的误解。转载 2008-11-27 16:56:00 · 442 阅读 · 0 评论 -
dispinterface接口、Dual接口以及Custom接口
所谓的自动化接口就是用IDispatch实现的接口。我们已经讲解过IDispatch的作用了,它的好处就是脚本语言象VBScript、 JavaScript也能用COM组件了,从而基本上做到了与语言无关它的缺点主要有两个,第一个就是速度慢效率低。这是显而易见的,通过虚函数表一下子就可以调用函数了,而通过Invoke则等于中间转了道手续,尤其是需要把函数参数转换成一种规范的格式才去调用函数,耽误了很转载 2009-01-05 10:51:00 · 1181 阅读 · 0 评论 -
COM中智能指针的用法
CComPtr用法2008-06-19 22:19COM接口指针很危险,因为使用过程中需要每一个使用者都要严格并且正确的AddRef和Release,一旦出现问题,就会造成对象不能被正常释放,或者对象被重复删除,造成程序崩溃。所以使用COM接口,必须小心翼翼才行。但是,即使所有的代码中,都正确的AddRef和Release,也不一定能保证万无一失,例如:void SomeApp( IHello *原创 2009-01-05 10:30:00 · 2790 阅读 · 2 评论 -
深入分析MFC中的CArray类
深入分析MFC中的CArray类作者:湖北 董志勇我们在使用vc进行比较复杂的编程时,经常需要用到复杂的数组结构,并希望能实现动态管理。由于C++并不支持动态数组,MFC提供了一个CArray类来实现动态数组的功能。有效的使用CArray类,可以提高程序的效率。MFC提供了一套模板库,来实现一些比较常见的数据结构如Array,List,Map。CArray即为其中的一个,用来实现动态数组的功能。C转载 2009-01-13 10:37:00 · 685 阅读 · 0 评论 -
函数指针理解-1
在C/C++中,数据指针是最直接,也最常用的,因此,理解起来也比较容易。而函数指针,作为运行时动态调用(比如回调函数 CallBack Function)是一种常见的,而且是很好用的手段。 我们先简单的说一下函数指针。(这一部份没什么价值,纯是为了引出下一节的内容) 2 常规函数指针 void(*fp)(); fp 是一个典型的函数指针,用于指向无参数,无返回原创 2008-11-19 16:04:00 · 508 阅读 · 0 评论 -
[C++]接口继承与实现继承
所谓接口继承,就是派生类只继承函数的接口,也就是声明;而实现继承,就是派生类同时继承函数的接口和实现。我们都很清楚C++中有几个基本的概念,虚函数、纯虚函数、非虚函数。虚函数:虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。——MSDN虚函数用来表现基类和派生类的成员函数之间的一种关系. +`%K i;l"Z @转载 2008-11-21 14:37:00 · 483 阅读 · 0 评论 -
C++的指针和引用
条款一:指针与引用的区别 指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变转载 2009-01-13 11:28:00 · 553 阅读 · 1 评论 -
C++ C# dll
publ public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("c://HWSendData.dll", EntryPoint = "SendDataToHW",原创 2009-01-15 14:24:00 · 581 阅读 · 0 评论 -
对基本数据形式的思考
程序运行时,所用的数据首先要被放在内存。内存有两个最基本的属性,一个是它的地址(编号),另一个就是它存储的数据。就如一堆小箱子,编号用来区分到底是用到哪个箱子,数值就如箱子里面放着的东西。数据放在内存,我们给它一个名字,名字只不过是个符号,符号本身都是没有什么意义的,符号代表的东西才有意义。取了名字之后可以根据名字来方便取回我的数就行了。名字到最后都会影射到地址。可以说,名字是只是给人看的转载 2008-11-26 16:45:00 · 420 阅读 · 0 评论 -
函数的参数传递
在一般情况下,什么时候用传值的方式,什么时候用传址的方式进行参数传递。这样做的考虑是什么? 在进行参数传递时应注意什么问题? 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。 值传递(pas原创 2008-11-27 10:32:00 · 2916 阅读 · 0 评论 -
避免产生临时(隐式)对象
产生一个对象,如果这个对象很大并且这个对象是在一个循环里面产生的,是特别耗资源的,因为编译器要找到一块合适的内存,如果没有合适的还要整理磁盘碎片并合并为一块合适的对象存储区。因此,在编程中一定要小心的产生临时对象。 临时对象在C++语言中的特征是未出现在源代码中,从堆栈中产生的未命名对象。这里需要特别注意的是,临时对象并不出现在源代码中。即开发人员并没有声明要使用它们,没有为其声转载 2008-11-27 11:10:00 · 630 阅读 · 0 评论 -
形参仅区别于是否const的重载
在《重载函数的概念》一文中,提到过“Record lookup(Phone);”和“Record lookup(constPhone);”并不是重载,因为形参仅仅区别在是否const。在那篇文章的结尾,还留了一句话:“有的时候可以凭是否const来重载,比如引用传递和指针传递。” 这里就有必要知道引用传递、指针传递和值传递前加const的实质了。 首先要说的是,非const的引用和非c原创 2008-11-27 14:02:00 · 1116 阅读 · 1 评论 -
内联函数的思考
内联函数是代码被插入到调用者代码处的函数。如同 #define 宏,内联函数通过避免被调用的开销来提高执行效率,尤其是它能够通过调用(“过程化集成”)被编译器优化。 内联函数和宏很类似,而区别在于,宏是由预处理器对宏进行替代,而内联函数是通过编译器控制来实现的。而且内联函数是真正的函数,只是在需要用到的时候,内联函数像宏一样的展开,所以取消了函数的参数压栈,减少了调用的开销。你可转载 2008-11-27 13:44:00 · 350 阅读 · 0 评论 -
指针与引用的区别c++
指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢? 首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因转载 2008-11-27 15:16:00 · 381 阅读 · 0 评论 -
数组指针--2
#include"stdafx.h"#include using namespace std; void main(){ // int a[5][10]={231,223,433,44,235,36,7,8,9,10,11,12,13}; int a[10]={231,223,433,44,235,36,7,8,9}; int *p,**p2; //指原创 2008-11-27 16:45:00 · 356 阅读 · 0 评论 -
经典算法10
关键字: 拉格朗日,牛顿插值,高斯,龙贝格 1.拉格朗日插值多项式 ,用于离散数据的拟合 C/C++ code #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记原创 2009-11-09 16:43:00 · 588 阅读 · 0 评论