青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

c++ effective心得

1.Operator overloading

 

一般的:  c& c::operator=(const c&){。。。。return *this;};   --------格式  運算符的重載
   w = x = y = z = "hello";//可以返回引用,效率高
   a+b+c+d     //必須返回類,而不是返回引用
   c c::operator=(const c &){ 。。。。。。return *this;};
  
Operators that can be overloaded
+, -, *, /, %, ^, &, +=,-=,*=,/=, (), [], >>, ==,=,->,++,--, ->*, … new, delete
Operators that can not be overloaded
., ::, ?:, .*
//Notes for ++, -- operator
區別:
 T& operator ++() //prefix ++a
 T operator++(int) //postfix a++


一般情況下幾乎總要遵循operator=輸入和返回的都是類對象的引用的原則.
必須返回一個對象時不要試圖返回一個引用,當需要在返回引用和返回對象間做決定時,你的職責是選擇可以完成正確功能的那個。至于怎么讓這個選擇所產生的代價盡可能的小,那是編譯器的生產商去想的事。

2.
const成員函數不被允許修改它所在對象的任何一個數據成員。mutable在處理“bitwise-constness限制”問題時是一個很好的方案,但它被加入到c++標準中的時間不長,所以有的編譯器可能還不支持它。
explicit表示必須顯示的調用該函數。

3.void including more times
#findef
#define

#endif

等價于
#progma once


4  .struct
                             #pragma pack(pop, n)
struct Employee{
 char cName[5];
 short  nAge;
        float  dSalary;
 bool  bMarried;
};
sizeof(Employee) depends on struct member alignment. Default is 4 bytes alignment. sizeof(Employee) = 16
2 bytes data wants to start from even address, 4 bytes data wants to start from address that is 4 times, 1 byte data can start from any address
我們可以用以下改變默認的對齊方式。
#pragma pack(pop, n)

5。enum :It can define a set of const values.

6。In fact, C++ compiler creates a global function for each member function, and add another parameter whose type is our class. 一般位類名_函數名_參數列表

7。constructor   ※   deconstructor

Copy Constructor 
Copy constructor is a constructor that has a parameter whose type is class reference.
and the class reference is const.
eg:
CRectangle( const CRectangle& other)
eg:
   CComplex a;
   CComplex b=a; // Copy constructor is invoked
   b=a; //Assignment operator is invoked

Converting Constructor
一般定義位explicit函數,必須被顯示的調用


8。const in class
  4 cases in a class
 const int member;只能在初始化列表里進行初始化
 int funct( const int nFactor,…);參數位常熟,在函數種不可被修改
 const int func(…); 返回的值位常熟不可以再被賦值和修改
 int func(…) const; 常函數,不可以修改所在類的成員,要修改的成員必須有mutable關鍵字


9。inline
You can see there is no function calling in assembly.
A function defined within a class definition is an inline function.
Although a function is inline, that whether to expend or not depends on compiler or its settings.一般函數里有循環的系統認為不內聯
10.  Member-initializer-list
Const, reference and base class constructor (that has arguments) must be initialized or called in member-initializer-list
Members are initialized by order that they are defined in class definition, not by order their initializers are in member-initializer-list.
eg:
CCircle::CCircle() : PI(3.14159), m_dOrgX(0.0), m_dOrgY(0.0)
{
}
基類的初始化,按照子類定義時的順序,不時初始化列表的順序

11。 class Default functions
Constructor [do nothing]
Copy constructor [bitwise copy]
Destructor ( ~ ) [do nothing]
Assignment operator ( = ) [bitwise copy]
Address operator ( & )
Dereference operator ( * )

//當有指針是自己定義拷貝構造和賦值
eg:
        if(other.m_pBuffer!=NULL) {
 m_pBuffer=new TCHAR[tcslen(other.m_pBuffer)+1];
 tcscpy(m_pBuffer,other.m_pBuffer);}

12 this 指針
Point lower;
lower.setX(20).setY(30).doubleMe() ;
因為:
     Point& setX(int x) { _x = x; return *this;}  
     Point& setY(int y) { _y = y; return *this;}  
     void doubleMe()
 {  _x *= 2;
  _y *= 2;  
 }

13。    const   static     int PI=1;類中的成員直接賦值,只有這一種情況可以,必須為int.

        double CCircle::PI = 1.0;類中的靜態成員初始化必須再類外,而且還的有類型, 如前面.
        靜態成員的初始化不能再構造函數中進行!

14.  Dynamic_cast
The dynamic_cast is used for safe casting from a pointer to a base class to a pointer to a derived class, often referred to as safe down casting. It is used when one must use the features of the derived class that are not present in the base class.

typeid            typeid( object );
The typeid operator returns a reference to a type_info object that describes `object`.

If the expression is of class type and the class contains one or more virtual member functions, then the answer may be different than the type of the expression itself. For example, if the expression is a reference to a base class, the typeid operator indicates the derived class type of the underlying object.

PTTI運行時刻類型識別允許“用指向基類的指針或引用來操作對象”的程序能夠獲取到“這些指針或引用所指的對象”的實際派生類型。
1. Dynamic_cast它允許在運行時刻進行類型轉換,從而使程序能夠在一個類層次結構中安全地轉換類型,把基類指針轉化成派生類指針,或把指向基類的左值轉換成派生類的引用,當然只有在保證轉換能夠成功的情況下可以。
2. typeid操作符,它指出指針或引用指向的對象的實際派生類型。它在程序中可以用于獲取一個表達式是一個類類型,并且含有一個或多個虛函數成員,則答案會不同于表達式本身的類型。例如,如果表達式是一個基類的引用,則typeid會指出底層對象的派生類類型。


15. What exceptions can a function throw if it has an exception specification of the form throw()?  (6’) throw all kinds of exceptions
If  it has no exception specification?
What means the syntax: catch (…) catch all types of exceptions

posted on 2005-11-09 12:56 夢在天涯 閱讀(1876) 評論(2)  編輯 收藏 引用 所屬分類: CPlusPlus

評論

# re: c++ effective心得 2006-08-17 12:26 keyws

T& operator ++() //prefix ++a
T operator++(int) //postfix a++
怎么解釋這個?即編譯器如何決定調用哪個?

  回復  更多評論   

# re: c++ effective心得 2008-10-14 14:33 ggz

@keyws
一個是++a 一個是a++  回復  更多評論   

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1817719
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲大片av| 另类尿喷潮videofree| 欧美日本亚洲视频| 亚洲乱码国产乱码精品精98午夜| 亚洲电影成人| 亚洲午夜精品久久久久久app| 亚洲国产精品久久人人爱蜜臀| 久久这里有精品视频| 亚洲国语精品自产拍在线观看| 欧美激情乱人伦| 欧美女同在线视频| 欧美一区二区视频网站| 久久精品成人| 亚洲精品五月天| 亚洲香蕉在线观看| 韩国三级电影久久久久久| 乱码第一页成人| 欧美日韩国产综合新一区| 亚洲欧美日韩区| 久久在线视频在线| 亚洲综合不卡| 久久另类ts人妖一区二区| 亚洲精品一区二| 亚洲特级毛片| 亚洲国产精品黑人久久久| 99这里只有久久精品视频| 国产亚洲一区在线| 亚洲精品欧美精品| 国产日产欧美精品| 最新日韩在线视频| 国产在线观看91精品一区| 亚洲日本激情| 极品尤物av久久免费看 | 在线观看欧美黄色| 中文在线不卡视频| 亚洲国产欧美不卡在线观看| 亚洲天堂第二页| 亚洲精品欧美极品| 欧美一级免费视频| 亚洲香蕉在线观看| 猛男gaygay欧美视频| 欧美一级淫片播放口| 欧美丰满少妇xxxbbb| 久久精品国产欧美激情| 欧美日韩亚洲一区二区| 乱码第一页成人| 国产欧美日韩免费| 99精品国产高清一区二区| 精品1区2区3区4区| 香蕉成人啪国产精品视频综合网| 亚洲老司机av| 男女视频一区二区| 老妇喷水一区二区三区| 国产亚洲亚洲| 亚洲欧美精品伊人久久| 亚洲综合成人婷婷小说| 欧美国产综合| 亚洲国内精品| 91久久精品久久国产性色也91| 久久国产精品毛片| 久久午夜视频| 亚洲毛片在线看| 一区二区三区视频免费在线观看| 91久久国产综合久久蜜月精品 | 国内成人精品2018免费看| 宅男精品视频| 亚洲欧美一级二级三级| 欧美色中文字幕| 一本色道久久综合亚洲精品高清| 亚洲精品视频免费在线观看| 麻豆精品视频在线| 欧美gay视频激情| 亚洲国产成人精品久久| 久久在线免费观看视频| 亚洲第一搞黄网站| 亚洲区欧美区| 欧美视频在线观看一区| 亚洲性视频网址| 欧美一区免费| 韩国av一区| 欧美暴力喷水在线| 亚洲精品乱码久久久久| 亚洲女同同性videoxma| 国产精品久久久久免费a∨大胸| 亚洲手机视频| 久久精品欧美日韩| 1000部国产精品成人观看| 欧美成人日韩| 一区二区三区欧美在线观看| 欧美在线高清| 亚洲电影在线观看| 欧美日韩成人在线播放| 香蕉久久一区二区不卡无毒影院 | 免播放器亚洲一区| 亚洲人屁股眼子交8| 欧美私人啪啪vps| 欧美一级黄色网| 亚洲黄色毛片| 欧美在线高清| 亚洲毛片在线观看.| 国产精品爱久久久久久久| 久久福利精品| 亚洲精品欧美在线| 久久久精品日韩| 一本久久综合| 国模大胆一区二区三区| 欧美精品一区二区视频| 午夜视频一区二区| 亚洲国产一区二区在线| 西瓜成人精品人成网站| 亚洲第一区中文99精品| 国产精品系列在线| 欧美承认网站| 欧美在线视频导航| 99re热这里只有精品视频| 久久人人爽人人爽爽久久| 亚洲校园激情| 亚洲国产高清高潮精品美女| 国产九九精品| 欧美日韩精选| 蜜桃久久精品一区二区| 亚洲欧美日韩一区| 一区二区三区产品免费精品久久75 | 久久日韩精品| 亚洲天堂免费在线观看视频| 亚洲福利在线看| 国产一区二区三区不卡在线观看| 欧美成人午夜激情视频| 久久在线视频| 久久高清免费观看| 亚洲女爱视频在线| 亚洲网友自拍| 亚洲视频在线一区观看| 99视频热这里只有精品免费| 亚洲第一成人在线| 欧美高潮视频| 免费亚洲电影| 免费一区二区三区| 久久综合九九| 久久久久欧美精品| 久久久久国产精品一区二区| 欧美在线观看视频一区二区三区| 亚洲一区二区黄色| 亚洲一区二区三区免费在线观看| 亚洲精一区二区三区| 亚洲另类在线视频| 99视频精品全部免费在线| 亚洲精品视频免费| 99热精品在线| 99视频一区| 亚洲一区二区三区中文字幕在线| 亚洲无线一线二线三线区别av| 99riav国产精品| 亚洲一区免费视频| 午夜国产精品视频免费体验区| 亚洲女人天堂av| 欧美中日韩免费视频| 久久久综合视频| 欧美成人精品h版在线观看| 亚洲第一级黄色片| 亚洲高清二区| 99re这里只有精品6| 亚洲天天影视| 久久精品成人| 欧美国产大片| 国产精品成人免费| 国产有码一区二区| 91久久线看在观草草青青| 99国产精品一区| 欧美影院精品一区| 蜜桃久久av一区| 亚洲精品国久久99热| 亚洲自拍偷拍一区| 久久午夜羞羞影院免费观看| 欧美精品国产| 国产日韩欧美自拍| 亚洲精品久久久久中文字幕欢迎你| 宅男精品视频| 久久亚洲图片| 亚洲精品视频中文字幕| 欧美一区二区三区在线播放| 欧美aⅴ一区二区三区视频| 欧美视频在线播放| 国内精品久久久久久久影视麻豆| 亚洲黄色性网站| 欧美一级黄色录像| 亚洲国产美女久久久久| 亚洲一区二区精品在线| 老司机aⅴ在线精品导航| 欧美午夜久久| 亚洲欧洲在线一区| 欧美中文在线字幕| 亚洲精品美女在线观看| 久久久精品动漫| 国产精品久久一级| 9i看片成人免费高清| 卡通动漫国产精品| 亚洲欧美bt| 欧美日韩综合网| 亚洲精品美女久久7777777|