zoukankan      html  css  js  c++  java
  • C++常见问题

    C++匿名对象

      C++也有匿名对象,只在当行代码有用,离开当行代码立马析构。

      

    mutable of C++

      mutalbe的中文意思是“可变的,易变的”,跟constant(即C++中的const)是反义词。
      在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。

      参考:http://dev.yesky.com/393/3007393.shtml

    C++ explicit

      explicit作用于构造函数,用于禁止隐式转换。

      按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:

    class String {
    String ( const char* p ); // 用C风格的字符串p作为初始化值
    //…
    }
    String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”);

      参考:http://www.cnblogs.com/cutepig/archive/2009/01/14/1375917.html

    C++之使用enum、inline替换define

     1、enum替换define。

      enum会有类型检察,define没有类型检查。

     2、inline替换define.

      可避免a++这样的问题。

    int a=5,b=0;
    CALL_WITH_MAX(++a,b);    //a被累加两次
    CALL_WITH_MAX(++a,b+10);  //a被累加一次

    C++之寄存器变量

      在程序运行时,根据需要到内存中相应的存储单元中调用,如果一个变量在程序中频繁使用,例如循环变量,那么,系统就必须多次访问内存中的该单元,影响程序的执行效率。因此,C\C++语言还定义了一种变量,不是保存在内存上,而是直接存储在CPU中的寄存器中,这种变量称为寄存器变量

      寄存器是与机器硬件密切相关的,不同类型的计算机,寄存器的数目是不一样的,通常为2到3个,对于在一个函数中说明的多于2到3个的寄存器变量,C编译程序会自动地将寄存器变量变为自动变量
     
      由于受硬件寄存器长度的限制,所以寄存器变量只能是char、int或指针型。寄存器说明符只能用于说明函数中的变量和函数中的形参,因此不允许将外部变量静态变量说明为"register"。

      参考:http://baike.baidu.com/view/3792358.htm

    C++之常函数

      

      这个const放在函数后面表示什么?const加在成员函数后面表示,此方法不能修改成员变量数据。const放在函数定义右方是为了与返回值的const区分开。

  • 相关阅读:
    设计模式之观察者模式
    设计模式之代理模式
    用Javascript模拟微信飞机大战游戏
    [Leetcode] Remove Duplicates from Sorted List II
    [Leetcode] Remove Duplicates from Sorted List
    [Leetcode] Remove Duplicates from Sorted Array II
    [Leetcode] Palindrome Number
    [Leetcode] Decode Ways
    [Leetcode] Climbing Stairs
    [Leetcode] Maximum Subarray
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3025036.html
Copyright © 2011-2022 走看看