C++关键字(include、typedef、template、const、static、virtual)

继续学习C++关键字,这一篇主要是认识include、typedef、template、const、static、virtual

这几个关键字。

1.include关键字

这个关键字作用主要是:引用头文件

但是引用的方式有些细微区别,如#include "AppConfig.h"和#include <AppConfig.h>

<mm>和"mm"是有区别的,在搜索头文件的路径和顺序上。

<>表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录;

“”表示先搜索当前目录,然后系统目录,然后PATH目录。

通常自定义的头文件用“”表示,因为自定义的通常都放在当前工作目录。

注意这里标准C++这么写:#include <AppConfig>

2.typedef

允许使用现有类型创建新类型

如 typedef int INT32

使用  INT32  i1

3.template

Templates能用来创建一个对未知数据类型的操作的函数模板.这个通过用其它数据类型代替一个占位符data-type 来实现。

这个关键字可以使我们创建一些通用的类或者函数。

例1

template<class type> type add(tpye a,tpye b)

{

return a+b;

}

调用

int c=add(1,2);等价于int c=add<int>(1,2);

例2

template<class X> void genericSwap( X &a, X &b )

{
      X tmp;
      tmp = a;
      a = b;
      b = tmp;

4.const

用来告诉编译器一个一旦被初始化过的变量就不能再修改。

作用
   (1)可以定义const常量         例如:
             const int Max=100;
             int Array[Max];        
   (2)便于进行类型检查            例如:
             void f(const int i) { .........}
        编译器就会知道i是一个常量,不允许修改;
   (3)可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
        还是上面的例子,如果在函数体内修改了i,编译器就会报错;
        例如: 
             void f(const int i) { i=10;//error! }
    (5) 为函数重载提供了一个参考。
         class A
         {
           ......
           void f(int i)       {......} file://一个函数
           void f(int i) const {......} file://上一个函数的重载
            ......
          };
     (6) 可以节省空间,避免不必要的内存分配。
         例如:
              #define PI 3.14159         file://常量宏
              const doulbe  Pi=3.14159;  file://此时并未将Pi放入ROM中
              ......
              double i=Pi;               file://此时为Pi分配内存,以后不再分配!
              double I=PI;               file://编译期间进行宏替换,分配内存
              double j=Pi;               file://没有内存分配
              double J=PI;               file://再进行宏替换,又一次分配内存!
         const定义常量从汇编的角度来看,只是给出了对应的内存地址,而不是象#define一样给出的是立即数,所以,const定义的常量在程序运行过程中只有一份拷贝,而#define定义的常量在内存中有若干个拷贝。
     (7) 提高了效率。
           编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。

5. static

数据类型用来给变量创建永久存储空间.静态变量在函数间调用时保持他们的值不变.

当用在一个类中时,所有要用到静态变量的时候这个类将把这个变量镜像过去。

主要作用如下:

(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,

       因此其值在下次调用时仍维持上次的值;
(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;

       (在其他模块用需要使用using namespace)
(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。

6.virtual

用来创建虚函数,它通常不被派生类有限考虑.但是假如函数被作为一个纯的虚函数 (被=0表示)时, 这种情况它一定被派生类有限考虑。

如果父类声明一个虚函数,子类声明同名函数覆盖父类,那么父类对象引用子类时,得到调用时子类方法。

Class A

{

public:

    virtual void f()

{

cout<<"A"<<endl;

}

}

Class B:public A

{

public:

void f()

{

cout<<"B"<<endl;

}

}

A a=new B();

a.f()输出时:A

转载于:https://www.cnblogs.com/liujp/archive/2012/08/21/2648760.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值