C++ - 文章列表

  • C++ exit()子程序终止函数与return()函数的差别

     exit()子程序终止函数与return()函数的差别  在main函数中我们通常使用return (0);这样的方式返回一个值。   但这是限定在非void情况下的也就是void main()这样的形式。   exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。   但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)#include <iostream>  #include &

  • c++面向对象编程多态的概念及多态的实现方法

     类的多态特性是支持面向对象的语言最主要的特性,有过非面向对象语言开发经历的人,通常对这一章节的内容会觉得不习惯,因为很多人错误的认为,支持类的封装的语言就是支持面向对象的,其实不然,Visual BASIC 6.0 是典型的非面向对象的开发语言,但是它的确是支持类,支持类并不能说明就是支持面向对象,能够解决多态问题的语言,才是真正支持面向对象的开发的语言,所以务必提醒有过其它非面向对象语言基础的读者注意!   多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码://例程1  #inclu

  • C++对象的复制 浅拷贝与深拷贝

      在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如:int a = 10; int b =a;  自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如:#include <iostream>  using namespace std;    class Test  {  public:    &nbs

  • C++堆内存是什么 如何应用

    堆内存是什么呢?   我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问题(bc或者是在老的标准中是alloc.h),它的函数原形是void* malloc(size_t size),在动态开辟的内存中,在使用完后我们要使用free()函数来释放动态开辟的内存空间。  下面我们来看一个完整的例子:#include <iostream>  #include&nb

  • 使用指针 减少栈空间内存的使用和减少运行时的计算开销

    这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销!#include <iostream>    #include <string>    using namespace std;        void print_char(char* array[]);//函数原形声明    &

  • C++程序规范审核表格

    文件结构重要性审查项结论 头文件和定义文件的名称是否合理?  头文件和定义文件的目录结构是否合理?  版权和版本声明是否完整? 重要头文件是否使用了 ifndef/define/endif 预处理块 ?  头文件中是否只存放“声明”而不存放“定义”  …… 程序的版式重要性审查项结论 空行是否得体?  代码行内的空格是否得体?  长行拆分是否得体?  “{” 和 “}” 是否各占一行并且对齐于同一列? 重要

  • C++面向对象的程序设计-类与对象

    在面向对象的程序设计中,有经常接触类、对象等专业名词;到底什么是类、什么是对象呢?在程序又是怎样运用呢?类是面向对象程序设计的核心,它实际是一种新的数据类型,也是实现抽象类型的工具,因为类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象;而对象是某一种类的实例,因此,类和对象是密切相关的。没有脱离对象的类,也没有不依赖于类的对象。   什么是类   类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这有点像C语言中的结构,唯一不同的就是结构没有定义所说的“数据相关的操作”,“数据相关的操作”就是我们平常经常看到的“方法

  • c++与c#如何相互调用 c#调用c++动态链接库

    c#如何调用c++动态链接库传递数组传递定长数组很简单,此处不述。下面的代码实现变长数组的传递:C++代码:int StaticElementNumber = 10;extern "C" AFX_API_EXPORT bool GetArray(int ElementNumber, double *BaseAddress){if (ElementNumber < StaticElementNumber){return false;}for (int i = 0; i < StaticElementNumber; ++i){BaseAddress[i] = 1 /

  • C++注册表操作范例

     1.读注册表// 读取注册表CString ReadRegisteTable(CString root,CString path, CString key){HKEY hAppKey;LPCTSTR WINDS_SERVICE_REGISTRY_KEY=path;LPCTSTR DATA_FILE_SUB_KEY=key;char szDataFile[80];if(root=="HKEY_LOCAL_MACHINE"){if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_LOCAL_MACHINE,WINDS_SERVICE_REGISTRY

  • c++指针的常见问题-返回局部变量

     函数返回指针。本来就是一个比较容易出问题的操作。在霍顿的《VC++ 入门经典》一书中,给出了一个很有代表性的例子,如下:  // Ex5_11.cpp  #include <iostream>  using std::cout;  using std::endl;  double* treble(double); // Function prototype  int main(void)  {  double num = 5.0; // Test value  double* ptr = 0; // Pointer to returned value  ptr = treble(