摘要:栈的应用2:#include<iostream>#include<malloc.h>#include<conio.h>#include<stdio.h>using namespace std;#define STACK_INT_SIZE 100#define STACEINCREMENT 10typedef int SElemType;typedef struct SqStack{ SElemType *base; SElemType *top; int stacksize;}SqStack;int InitStack(SqStack &
阅读全文
随笔分类 - C++/C
摘要:栈的应用1: 1 #include <iostream> 2 #include <malloc.h> 3 #include <conio.h> 4 #include <stdio.h> 5 6 using namespace std; 7 8 #define STACK_INT_SIZE 100 9 #define STACKINCREMENT 1010 typedef int SElemType;11 typedef struct SqStack12 {13 SElemType *base;14 SElemType *top;15 int st
阅读全文
摘要:1 #include<iostream> 2 using namespace std; 3 4 class Base 5 { 6 public: 7 Base() 8 { 9 cout<<"Base Ctor"<<endl;10 foo();11 }12 ~Base()13 {14 cout<<"Base Dtor"<<endl;15 foo();16 }17 virtual void foo()18 {19 cout<<"foo Base..."...
阅读全文
摘要:◇概念:C++使用虚拟继承(Virtual Inheritance),解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同一个函数名也只有一个映射。◇解决问题:解决了二义性问题,也节省了内存,避免了数据不一致的问题。◇同义词:虚基类(把一个动词当成一个名词而已)当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。◇语法:class 派生类: virtual 基类1,
阅读全文
摘要:本文出处:http://pppboy.blog.163.com/blog/static/302037962010825105652390/说明:sizeof在笔试面试的时候频频地出现,这也是对基础的一个考查。关于sizeof的文章很多,但感觉大家都没有好好总结下,本着“先行先赢”和“为人民服务”的精神,查找引用参考了很多文章,在这里总结一下,有错误或者遗漏的地方还得请高手多多指教,也不要因这这些问题误导别人,希望以后大家在学习的过程中也能节省些时间。一、概要sizeof是C语言的一种单目操作符(但有人也不这么以为,认为它是一种特殊的宏),如C语言的其他操作符++、--等。它并不是函数(这是必须
阅读全文
摘要:本文章出处:http://pppboy.blog.163.com/blog/static/30203796201082494026399/说明:结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,对sizeof我们将在另一篇文章中总结,这篇文章我们只总结结构体的sizeof,报着不到黄河心不死的决心,终于完成了总结,也算是小有收获,拿出来于大家分享,如果有什么错误或者没有理解透的地方还望能得到提点,也不至于误导他人。一、解释现代计算机中内存空间都是按照byte划分的,从理
阅读全文
摘要:对一个数据可以建立一个“引用”,作用是为一个变量起一个别名。这是C++对C的一个重要扩充。int a; //定义a是整型变量int &b = a; //声明b是a的引用声明了b是a的引用,即b是a的别名。经过这样的声明后,使用a或b的作用相同,都代表同一变量。可以这样理解引用:声明b为引用,并不需要另外开辟内存单元来存放b的值。b和a占内存中同一个存储单元,它们具有同一地址。即使变量b具有变量a的地址。注意:1. 引用不是一种独立的数据类型,对引用只有声明,没有定义。必须先定义一个变量,然后声明对该变量建立一个引用(别名)。2. 声明一个引用时,必须同时使之初始化,即声明它代表哪一个变
阅读全文
摘要:全局变量(外部变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为本文件中各个函数所引用。编译时将全局变量分配在静态存储区。有时需要用extern来声明全局变量,以扩展全局变量的作用域。1.在一个文件内声明全局变量如果外部变量不在文件的开头定义,其有效的作用范围只限定于定义的位置起到文件终了的位置止。如果在定义点之前的函数想引用该全局变量,则应该在引用之前用关键字extern对该变量作外部变量的声明,表示该变量是一个将在下面定义的全局变量。有个此声明,就可以从声明的位置起,合法的引用该全局变量,这种声明称为提前引用声明。 1 #includ
阅读全文
摘要:转载:http://blog.csdn.net/yudingjun0611/article/details/77868431.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标...
阅读全文
摘要:(1) 声明类模板时要增加一行template<class 类型参数名>在template后面的尖括号内的内容为模板的参数表列,关键字class表示其后面的是类型参数(虚拟类型参数)。实现一类多用。(2)声明一个类模板后,怎样使用它?怎样使它变为一个实际的类?必须用实际类型去取代虚拟类型1.类模板名<实际类型名>对象名;2.类模板名<实际类型名>对象名(实参列表);如:compare<int> cmpl;compare<int> cmpl(3,7);(3)如果在类模板外定义成员函数,应写成类模板形式:template<class
阅读全文
摘要:1.基本数据类型的sizeof这里的基本数据类型指short、int、long、float、double这样的简单内置数据类型,由于它们都是和系统相关的,所以在不同的系统下取值可能不同,这务必引起我们的注意,尽量不要在这方面给自己程序的移植造成麻烦。一般的,在32位编译环境中,sizeof(int)的取值为4。visual studio 2005中: cout << sizeof(char)<<endl; //1 cout << sizeof(short)<<endl; //2 cout << sizeof(int) <<
阅读全文
摘要:用static声明静态局部变量有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保持上一次函数调用结束时的值。这时就该指定该局部变量为静态局部变量(static local varible)。(1)静态局部变量在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,存储在动态存储区空间,函数调用结束后即释放。(2)为静态局部变量赋初值是在编译时进行的,只赋初值一次,在程序运行时已有初值。以后每次调用函数时,不再重新赋值,而只是保留上次函数调用结束时的值。而自动变量赋初值,不是在编译时
阅读全文
摘要:在定义变量时,如果加上关键字const,则变量的值在程序运行期间不能改变,这种变量成为常变量(constant variable)。在定义常变量时必须同时对它初始化(即指定其值),此后它的值不能改变。常变量不能出现在赋值号的左边。Const int a=3; //正确Const int a; a=3; //错误,常变量不能被赋值可以用表达式对常量初始化。#define 命令定义的符号常量和用const定义的常变量:1、符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换为所指定的字符串,它没有类型,在内存中并不存在以符号常量命名的存储单元。2、常变量具有变量的特征,它具有类型,在
阅读全文
摘要:1、 虚函数的作用允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。2、虚函数的使用方法(1)在基类中用virtual声明成员函数为虚函数,这样可以在派生类中重新定义此函数,为它赋予新的功能,并能方便的被调用;(2)在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体;(3)定义一个指向基类对象的指针变量,并使它指向同一类族中的某一对象;(4)通过该指针变量调用此虚函数,此时调用的就是指针变量指向的对象的同名函数。C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数
阅读全文
摘要:1、对象(object)客观世界中任何一个事物都可以看成一个对象;对象应当具备两个要素:属性(静态特征)和行为(动态特征)。使用面向对象的程序设计方法设计一个复杂的软件系统时,首要问题是确定该系统由哪些对象组成,并设计这些对象。在C++中,每个对象都由数据和函数(即操作代码)组成。数据体现了“属性”;函数是用来对数据进行操作的,以便实现某些功能。调用对象中的函数就是向该对象传送一个消息(message),要求该对象实现某一行为(功能)。2、封装(encapsulation)与信息屏蔽封装包括两个方面的含义:一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相互独立,互不
阅读全文
摘要:1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。3.因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。4.C++程序经常要调
阅读全文

浙公网安备 33010602011771号