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

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

搜索

  •  

積分與排名

  • 積分 - 1817732
  • 排名 - 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在线| 亚洲精品视频在线观看网站| 亚洲色图制服丝袜| 国产精品成人播放| 小嫩嫩精品导航| 欧美一级在线播放| 久久人人爽人人爽| 欧美精品v日韩精品v国产精品| 亚洲国产精品久久久久久女王| 欧美高清视频在线| 欧美日韩高清不卡| 性色av一区二区三区在线观看| 亚洲欧美日韩国产中文| 国产一区二区三区电影在线观看| 卡通动漫国产精品| 欧美激情女人20p| 亚洲欧美日韩一区二区在线| 欧美一区二区| 亚洲人成毛片在线播放女女| 日韩视频在线观看国产| 国产欧美日韩一区二区三区在线| 免费影视亚洲| 欧美性色aⅴ视频一区日韩精品| 亚洲作爱视频| 精品999日本| 欧美a一区二区| 欧美日本在线播放| 午夜在线a亚洲v天堂网2018| 久久九九精品99国产精品| 亚洲欧洲综合另类在线| 亚洲免费观看| 伊人春色精品| 妖精成人www高清在线观看| 国产亚洲精品久久久久久| 亚洲国产成人精品视频| 国产精品日韩一区二区| 亚洲国产精品久久久久秋霞影院 | 亚洲午夜精品久久| 在线观看一区二区视频| 亚洲视频精品在线| 亚洲精品日韩一| 欧美在线视频一区二区三区| 一区二区av| 久久裸体艺术| 亚洲欧美日本在线| 欧美岛国在线观看| 女生裸体视频一区二区三区| 国产精品久久久久久五月尺| 亚洲日本理论电影| 亚洲人成人77777线观看| 欧美一区二区日韩| 午夜精品在线观看| 欧美日韩午夜视频在线观看| 欧美电影在线观看| 红桃视频国产一区| 欧美怡红院视频| 久久大香伊蕉在人线观看热2| 欧美午夜精品一区| 亚洲精品免费一区二区三区| 在线观看一区视频| 久久综合一区| 欧美freesex交免费视频| 国产在线播放一区二区三区| 亚洲免费一级电影| 亚洲欧美综合国产精品一区| 欧美性事免费在线观看| 99精品久久久| 亚洲伊人久久综合| 国产精品美女黄网| 亚洲一区二区在| 午夜精品久久久久久久男人的天堂| 欧美日韩伦理在线免费| 亚洲欧洲综合另类| 9l国产精品久久久久麻豆| 欧美大胆人体视频| 亚洲美女在线看| 正在播放欧美一区| 国产精品jizz在线观看美国 | 久久字幕精品一区| 在线成人免费视频| 欧美肥婆在线| 日韩亚洲在线观看| 亚洲天堂视频在线观看| 欧美性事在线| 欧美一区二区三区在线观看 | av不卡在线看| 欧美体内谢she精2性欧美 | 美女91精品| 亚洲人成在线观看网站高清| 欧美剧在线免费观看网站| 亚洲性图久久| 久久免费视频网| 亚洲精品日韩欧美| 欧美午夜激情在线| 久久精品一区中文字幕| 欧美韩国一区| 亚洲午夜三级在线| 激情视频一区| 欧美视频在线观看| 久久狠狠一本精品综合网| 91久久黄色| 久久九九有精品国产23| 亚洲日本一区二区三区| 国产精品美女久久久| 巨乳诱惑日韩免费av| 宅男精品导航| 欧美成人免费视频| 午夜欧美理论片| 91久久国产综合久久| 国产精品系列在线| 欧美77777| 欧美影院一区| 亚洲午夜久久久久久久久电影网| 美女精品在线| 欧美影片第一页| 夜夜嗨av色一区二区不卡| 国产亚洲精品自拍| 欧美日韩精品欧美日韩精品一 | 亚洲每日在线| 美国十次成人| 欧美影院视频| 在线中文字幕一区| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产乱码精品| 欧美激情在线有限公司| 久久av一区| 亚洲深夜福利视频| 亚洲精品乱码久久久久久蜜桃麻豆| 久久久免费精品视频| 亚洲综合国产精品| 一级日韩一区在线观看| 亚洲国产精品一区在线观看不卡 | 销魂美女一区二区三区视频在线| 亚洲精品久久久久中文字幕欢迎你 | 麻豆乱码国产一区二区三区| 亚洲欧美日韩国产综合精品二区| 亚洲乱码视频| 91久久精品国产91久久性色tv| 国产一区二区视频在线观看| 国产精品日本一区二区| 欧美午夜不卡在线观看免费 | 久久亚洲欧美国产精品乐播| 欧美影院久久久| 香蕉久久一区二区不卡无毒影院| 亚洲中字在线| 午夜日韩在线观看| 香蕉久久夜色| 久久精品国产免费看久久精品| 午夜天堂精品久久久久 | 亚洲人成亚洲人成在线观看图片 | 日韩午夜一区| 日韩午夜在线电影| 一区二区三区久久| 亚洲一级黄色| 午夜精品视频| 欧美专区第一页| 久久精品青青大伊人av| 久久夜色精品国产亚洲aⅴ| 六月婷婷一区| 欧美人与禽猛交乱配| 欧美日韩综合视频| 国产欧美精品在线| 好吊妞这里只有精品| 亚洲国产成人精品久久| 99在线|亚洲一区二区| 亚洲午夜激情网站| 欧美亚洲视频| 欧美成人tv| 日韩视频免费观看| 午夜一区在线| 欧美11—12娇小xxxx| 欧美亚洲成人网| 国产一区二区久久久| 亚洲欧洲精品一区| 亚洲影院污污.| 欧美主播一区二区三区美女 久久精品人 | 亚洲国产成人91精品| 亚洲最新中文字幕| 性欧美18~19sex高清播放| 久久婷婷亚洲| 99精品视频免费| 久久国产日韩欧美| 欧美视频专区一二在线观看| 国产一区二区三区黄| 亚洲美女在线观看| 久久精品国产亚洲一区二区| 亚洲二区视频| 羞羞答答国产精品www一本| 免费h精品视频在线播放| 国产精品久久久一区二区| 亚洲成色777777女色窝| 亚洲欧美一区二区视频| 欧美国产一区视频在线观看| 亚洲免费视频网站| 欧美人体xx| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲大胆视频| 欧美一级成年大片在线观看| 亚洲国产精品传媒在线观看| 久久国产夜色精品鲁鲁99|