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

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 夢在天涯 閱讀(1875) 評論(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

搜索

  •  

積分與排名

  • 積分 - 1816188
  • 排名 - 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>
              欧美激情在线狂野欧美精品| 99视频精品| 国产精品影院在线观看| 日韩亚洲在线观看| 亚洲欧美影院| 国内在线观看一区二区三区| 久久蜜桃香蕉精品一区二区三区| 欧美电影资源| 一区二区三区毛片| 国产精品视频内| 久久精品99国产精品| 亚洲国产精品va在线看黑人| 欧美性生交xxxxx久久久| 农村妇女精品| 在线视频精品一| 国产嫩草一区二区三区在线观看 | 亚洲午夜视频| 国产区亚洲区欧美区| 久久―日本道色综合久久| 91久久久在线| 久久精品九九| 亚洲裸体视频| 国产一区二区三区四区在线观看| 欧美.日韩.国产.一区.二区| 在线亚洲电影| 欧美成人首页| 国产日韩欧美一区二区三区在线观看 | 亚洲永久精品大片| 国产午夜精品美女视频明星a级| 久久综合福利| 亚洲欧美日韩精品久久久| 欧美国产日韩一区| 性感少妇一区| 亚洲精品久久| 国产三区精品| 欧美日韩一区二区在线视频 | 久久久亚洲影院你懂的| 亚洲免费久久| 免费在线观看成人av| 国产精品午夜在线观看| 美女在线一区二区| 午夜精品剧场| 夜夜夜精品看看| 亚洲国产精品高清久久久| 久久精品123| 亚洲——在线| 欧美精品午夜| 欧美国产日韩a欧美在线观看| 性欧美xxxx大乳国产app| 99av国产精品欲麻豆| 在线观看视频日韩| 国内成+人亚洲+欧美+综合在线| 欧美视频一区二区三区在线观看 | 亚洲免费av观看| 黄色国产精品一区二区三区| 国产精品欧美久久| 欧美日韩一区二区欧美激情 | 国产精品亚洲综合色区韩国| 亚洲性av在线| 99亚洲伊人久久精品影院红桃| 国产精品自拍在线| 亚洲日本成人网| 亚洲大片精品永久免费| 免费欧美在线| 麻豆国产精品一区二区三区| 国产精品久久久久免费a∨大胸| 亚洲女人小视频在线观看| aa级大片欧美| 一本色道久久综合| 一本色道久久综合亚洲精品高清| 亚洲精品亚洲人成人网| 亚洲三级影片| 99国内精品| 亚洲一区二区高清| 亚洲一区二区三区精品在线观看| 一本在线高清不卡dvd| 亚洲视频一区在线| 亚洲在线观看| 午夜免费久久久久| 久久激情综合| 久久综合久久88| 欧美.com| 欧美视频在线观看免费| 国产精品毛片a∨一区二区三区| 午夜精品久久久久99热蜜桃导演| 亚洲综合另类| 久久久91精品国产| 蜜臀av性久久久久蜜臀aⅴ| 欧美高清视频一区二区三区在线观看 | 欧美一区二区视频在线| 欧美一区二区三区免费观看视频| 久久国产精品99精品国产| 久久米奇亚洲| 欧美极品一区| 久久综合色天天久久综合图片| 亚洲欧洲日本mm| 中日韩男男gay无套| 西西裸体人体做爰大胆久久久| 久久精品成人一区二区三区| 免费看精品久久片| 亚洲精品亚洲人成人网| 亚洲欧美成人网| 久久在线视频| 国产精品福利av| 国产揄拍国内精品对白| 亚洲欧洲视频| 午夜视频在线观看一区| 亚洲高清在线| 亚洲一二三级电影| 久久综合亚州| 一本大道久久精品懂色aⅴ| 欧美综合国产精品久久丁香| 欧美国产欧美综合| 国产欧美日韩免费| 欧美在线不卡| 久久久爽爽爽美女图片| 欧美日韩另类国产亚洲欧美一级| 国产精品一区二区你懂得 | 欧美一级理论片| 欧美成人午夜激情在线| 亚洲色图自拍| 欧美99久久| 国产视频久久网| 一区二区三欧美| 久久米奇亚洲| 99精品视频免费在线观看| 久久精品日产第一区二区| 欧美日韩综合在线| 91久久精品国产91性色tv| 欧美一区二区三区四区视频 | 一区二区三区高清在线| 欧美a一区二区| 国产欧美日韩91| 亚洲小少妇裸体bbw| 欧美黑人一区二区三区| 亚久久调教视频| 国产精品久久久久91| 亚洲日本免费电影| 久久综合九色综合欧美狠狠| 欧美午夜片在线免费观看| 欧美v国产在线一区二区三区| 日韩视频一区二区在线观看| 亚洲欧美国产一区二区三区| 久久精品国产成人| 国产精品一区二区黑丝| 一区二区三区视频在线看| 免费久久99精品国产自| 91久久久久久久久久久久久| 99精品99| 久热这里只精品99re8久| 欧美视频手机在线| 最新高清无码专区| 久久久久国产精品一区| 一区二区三区四区五区在线| 久久婷婷av| 激情av一区| 美女福利精品视频| 久久精品人人做人人爽电影蜜月| 欧美日韩另类视频| 亚洲日本va在线观看| 亚洲国产二区| 欧美三级欧美一级| 亚洲欧美日韩人成在线播放| 久久人人97超碰精品888| 国产精品视频内| 欧美一级午夜免费电影| 亚洲在线视频| 国产精品你懂的在线| 亚洲欧美国产毛片在线| 亚洲一区二区高清视频| 国产精品一区二区三区乱码| 欧美一级一区| 小黄鸭精品aⅴ导航网站入口| 国产欧美日韩亚洲一区二区三区| 欧美亚洲尤物久久| 午夜日韩电影| 一区二区三区自拍| 欧美激情第二页| 欧美激情一区在线观看| 亚洲一区二区免费看| 亚洲欧美日韩一区二区在线| 狠狠干成人综合网| 欧美韩国一区| 欧美日韩在线第一页| 久久se精品一区二区| 久久另类ts人妖一区二区| 亚洲精品久久久久久下一站| 欧美激情综合| 国产精品国产亚洲精品看不卡15| 欧美一区二区黄色| 久久久久**毛片大全| 99在线视频精品| 亚洲欧美卡通另类91av| 极品裸体白嫩激情啪啪国产精品| 亚洲国产高清aⅴ视频| 国产精品久久久久久久久婷婷 | 国产精品v片在线观看不卡| 欧美亚洲网站| 老司机免费视频一区二区| 亚洲色图综合久久|