STL(一)C++编程技术

      C++语言由Bjarne Stroustrup开发,兼容于C语言,以面向对象方式,提供更直观的程序设计方法,更强大的语言开发能力,更严谨的安全管理和更有效的程序代码组织机制。

一、类和对象:支持面向对象编程

二、类的继承:一个类(继承类)可在另一个类(基类)的基础上,增设变量和函数,从而实现了基类的一个扩充

三、函数重载:重载的函数都具有相同的函数名,但要求参数的类型或个数必须不同,以使编译器确切知道所调用的函数是哪一个重载函数

例1:能编译通过                   例2:不能编译通过,因为仅是返回值不同,编译器是无法知道调用哪个func(3)
   int   func(int  i);             int  func(int i);
   double  func(double d);          double func(int  i);  

     如要求覆盖基类函数,必须用vritual关键字进行修饰,声明为虚函数

例如:

#include <stdio.h>
class  CBase {
public:
      virtual  void   f(int x) {   printf("CBase::f :  %d\n", x); }
      void    g(float x) {   printf("CBase::g: %f\n", x);  }
};

class CDerived:public  CBase {
public:
      void f(int x)  {   printf("CDerived::f : %d\n", x);  }
      void g(float x)  {  printf("CDerived:g : %f\n", x); }
};

void main() {
     CDerived  DerivedObj;
     DerivedObj.f(3);                 //正常执行继承类f函数
     DerivedObj.g(6.0f);          //正常执行继承类g函数
     CBase   *pBaseObj = &DerivedObj;
     pBaseObj->f(3);              //正常执行继承类的f函数
     pBaseObj->g(6.0f);        //实际执行基类的g函数
}


    此外,如果在虚函数的声明之后加上“=0“的标记,函数就成为纯虚函数。该类称为抽象类。抽象类不能创建对象,作为继承类的接口规范,要求继承类必须提供一个纯虚函数的具体实现,否则产生编译错误。

四、访问控制:public, protected and private

五、操作符重载:操作符的重载是一种特殊的函数重载

六、显式类型转换:C++仍然支持C语言中的隐式类型转换,但提供了4个显式的类型转换操作函数reinterpret_cast, const_cast, static_cast 和 dynamic_cast

             reinterpret_cast<new_type>(expression)

             const_cast<new_type>(expression)

             static_cast<new_type>(expression)

            dynamic_cast<new_type>(expression)

七、异常处理:C++提供了一种更完善的异常处理机制

#include <stdio.h>

int  main(void) {

      try{

                  printf("try1\n");        throw  10;    //产生一个int异常

       } catch (int   &i) {   //使用引用,省去复制开销

                 pintf("try1: %d\n", i);

       }

}


   异常可以

八、名字空间:传统大型软件项目的开发,比较容易出现类、变量或函数同名的问题。或与标准库出现名字重复,以致覆盖了标准库的类和函数,或与第三方提供的库出现名字重复,此时会提示无法编译的错误,又或者本项目各模块之间出现名字重复。为解决同名冲突问题,使用C++提供的名字空间技术。

#include <stdio.h>
namespace   NS1 {
int   a = 1;
}
namespace NS2 {
int  a = 8;
}
int main(void) {
     printf("NS1:  %d\n",  NS1::a);
     printf("NS2:  %d\n",  NS2::a);
     return 0;
}


九、友员函数:通常一个成员函数只可对它所在类的数据成员进行访问,如果要同时访问多个类的数据成员(包括私有成员),可在这些类中都声明一个友员函数。友员函数是独立于各个类的。

#include  <stdio.h>
class   B;
class   A {
      bool   bfinish;
      friend  bool   check(A  a,   B  b);
public:
      A(bool  b)  { bfinish = true; }
};
class  B {
      bool   bfinish;
      friend    bool   check(A a, B b);
public:
      B(bool  b)  {  bfinish = b; }
};
bool    check(A a, B b)   {   //定义友员函数
      if (a.bfinish   &&  b.bfinish)     return true;
      else   return  false;
}
int main(void)  {
       A    a(true);
       B    b(false);
       if (check(a, b))   printf("bath of bfinish are  true\n");
       return 0;
}


十、内联函数:一种用于提高代码效率的技术,用适度的代码空间膨胀,来换取较高的执行速度。编译器将展开内联函数

十一、静态成员:该类的对象可直接访问静态成员变量,只有静态成员函数才能对静态成员变量进行访问操作



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值