一些C++语法

一、   C++ 中cast 意为强制类型转换 ,  const_cast  去除const特性; static_cast  类型 静态 转换  float f;  static_cast<int>(f);      
         dynamic_cast    将指向基类的指针动态转换为指向派生类的指针  Base* p;      Derive* pp = dynamic_ cast<Derive*>(p) ;
二、   explicit(显示的) 抑制抑制隐式转换。

   explicit   只对构造函数起作用,用来抑制隐式转换。如:   
  class   A   {   
          A(int   a);   
  };   
  int   Function(A   a);   
         A    a = 2;    // right,  equal to:    A   a = A(2);
  当调用   Function(2)   的时候,2   会隐式转换为   A   类型。这种情况常常不是程序员想要的结果,所以,要避免之,就可以这样写:   
    
  class   A   {   
          explicit   A(int   a);   
  };   
  int   Function(A   a);  
  A    a = 2;    // error,  explicit
  
  这样,当调用   Function(2)   的时候,编译器会给出错误信息(除非   Function   有个以   int   为参数的重载形式),这就避免了在程序员毫不知情的情况下出现错误。

总结:explicit   只对构造函数起作用,用来抑制隐式转换。

三、 注意二维数组的参数传递
          funct(int a[10]);                             funct(int a[],int n);                         funct(int *a, int n);
          funct(int a[10][10]);                        funct(int  a[][10]);          //二维数组做参数必须指定列数  

四、  ifstream  fin("input.txt");
        string str;
        getline(fin,str);      

五、 const int row = 5;
         const int col = 3;
         vector<vector<int> >   a(row,vector<int>(col));           相当于动态定义二维数组 a[row][col]   
       a.~vector();        

六、模板内的迭代器定义要加上typename关键字   
        typename    vector<T>::iterator  iter;

七、  malloc/ free     C库函数,分配内存不会调用构造函数和析构函数,初始化必须调用初始化函数。在C++中保留为了能够调用C函数,因为C           
                                                                                                                                                                                    只支持malloc/free
        new /delete     操作符;   A*  pa = new A;     分配并初始化
        重载new操作符: friend void* operator new(size_t size)   { }

八、 point(const point& p)
        {
            x = p.x;
            y = p.y;
        }
       这种做法是正确的: point  p( point(5,6) );    无名临时对象遇到分号即销毁,调用拷贝构造函数时仍然存在。

九、 。     
        
十、 extern int i;     声明外部变量; 
        volatile int i;     定义变量i, 它每次使用时都必须从内存中读取
        mutable  int i;    定义可更改的变量,即使在const成员函数中也能被更改。
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值