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

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

搜索

  •  

積分與排名

  • 積分 - 1812155
  • 排名 - 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>
              狠狠网亚洲精品| 国产欧美精品va在线观看| 影院欧美亚洲| 欧美激情精品久久久久久变态| 久久激情综合网| 91久久在线视频| 日韩一级欧洲| 国产麻豆91精品| 久久嫩草精品久久久精品| 免费日韩av电影| 亚洲新中文字幕| 小嫩嫩精品导航| 91久久精品国产91久久| 亚洲精品在线视频观看| 国产精品一区在线观看你懂的| 久久久噜噜噜久久中文字免| 免费在线欧美黄色| 亚洲欧美日韩直播| 麻豆成人在线观看| 亚洲综合国产| 可以免费看不卡的av网站| 国产精品99久久久久久久女警| 欧美一激情一区二区三区| 亚洲高清在线| 午夜精品偷拍| 一区二区免费在线视频| 欧美影院在线| 亚洲图片欧美午夜| 另类av一区二区| 欧美一区二区网站| 欧美激情精品久久久久久| 欧美有码视频| 欧美日韩在线播放一区| 麻豆久久婷婷| 国产精品入口| 91久久精品日日躁夜夜躁国产| 欧美网站大全在线观看| 欧美好骚综合网| 国产日韩欧美综合一区| 99国产精品视频免费观看| 亚洲第一狼人社区| 欧美一区二区播放| 亚洲欧美精品| 欧美日韩一区国产| 亚洲第一二三四五区| 午夜在线视频观看日韩17c| 亚洲伦理精品| 蜜桃av综合| 欧美成人精品三级在线观看 | 亚洲高清av| 国产午夜精品全部视频播放| 99热在这里有精品免费| 99国产精品久久久久久久久久| 久久国产99| 久久激情视频| 国产精品视频九色porn| 制服丝袜亚洲播放| 一区二区毛片| 欧美视频在线看| 中国成人在线视频| 亚洲桃花岛网站| 欧美午夜视频一区二区| 一本色道久久88精品综合| 一本色道久久加勒比精品| 欧美精品亚洲一区二区在线播放| 欧美成人亚洲成人日韩成人| 在线观看国产欧美| 久久在线免费观看| 亚洲成色999久久网站| 亚洲肉体裸体xxxx137| 欧美激情第4页| 亚洲免费观看高清完整版在线观看| 日韩网站免费观看| 欧美日韩午夜激情| 亚洲性感美女99在线| 欧美一区二区大片| 伊人久久婷婷色综合98网| 久久综合网色—综合色88| 欧美激情片在线观看| 9国产精品视频| 国产农村妇女精品一区二区| 欧美亚洲在线播放| 亚洲第一中文字幕| 国产精品99久久久久久白浆小说| 国产精品区免费视频| 久久av一区二区| 欧美激情精品久久久久久蜜臀| 亚洲精品一区在线观看香蕉| 国产精品v欧美精品v日本精品动漫 | 女同一区二区| 一区二区福利| 国产一区二区在线观看免费播放| 欧美综合国产| 亚洲精品自在久久| 久久久国产一区二区| 日韩一级大片| 国产日本欧美视频| 老司机免费视频久久| 一本一本a久久| 久久精品亚洲一区二区三区浴池 | 欧美女同视频| 亚洲欧美视频| 亚洲精选一区| 久久久九九九九| 亚洲图片欧洲图片日韩av| 国产伪娘ts一区| 欧美精品在线观看一区二区| 午夜精品999| 99pao成人国产永久免费视频| 国内精品美女av在线播放| 欧美绝品在线观看成人午夜影视 | 亚洲欧美日韩精品久久奇米色影视| 你懂的国产精品| 欧美一区二区高清在线观看| 亚洲精品一区二区三区婷婷月| 国产欧美激情| 国产精品va在线| 欧美日韩福利视频| 老司机午夜精品视频| 午夜激情亚洲| 一区二区国产日产| 亚洲激情电影中文字幕| 久久在线精品| 欧美一区视频| 欧美亚洲免费高清在线观看| 亚洲午夜在线观看视频在线| 最新亚洲电影| 亚洲国产精品欧美一二99| 国模精品一区二区三区| 国产精品一区二区在线观看| 欧美日韩国产限制| 欧美日韩国产成人在线91| 欧美aⅴ一区二区三区视频| 久久美女艺术照精彩视频福利播放| 亚洲欧美区自拍先锋| 亚洲视频日本| 亚洲欧美成人一区二区三区| 亚洲一级网站| 午夜精品久久久久影视| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲免费不卡| 亚洲午夜成aⅴ人片| 亚洲视频精选| 亚洲免费影院| 欧美一区二区福利在线| 久久精品五月婷婷| 久久米奇亚洲| 欧美成人一区在线| 欧美日韩三区| 国产精品久久久久久久7电影| 国产精品成人aaaaa网站| 国产精品一区在线观看你懂的| 国产欧美69| 亚洲国产mv| 一本色道综合亚洲| 亚洲自啪免费| 久热精品视频在线观看一区| 欧美成人综合一区| 日韩写真在线| 亚洲欧美在线高清| 久久国产手机看片| 欧美成人资源| 欧美午夜电影网| 狠狠入ady亚洲精品| 亚洲韩日在线| 亚洲自拍高清| 欧美xx视频| 夜夜嗨网站十八久久| 香蕉免费一区二区三区在线观看| 久久国产欧美精品| 欧美日本三级| 国产日韩精品久久久| 91久久精品国产91性色tv| 亚洲无线一线二线三线区别av| 欧美在线高清视频| 欧美激情视频一区二区三区免费| 夜色激情一区二区| 久久久国产精彩视频美女艺术照福利 | 欧美成人一区二区三区片免费| 亚洲精品麻豆| 欧美在线国产精品| 欧美激情一区二区三级高清视频| 国产精品理论片| 亚洲高清不卡av| 校园春色国产精品| 欧美成人69| 亚洲欧美视频在线观看视频| 欧美激情精品久久久久久久变态| 久久大香伊蕉在人线观看热2| 欧美成人小视频| 激情六月综合| 亚洲欧美成人| 91久久嫩草影院一区二区| 久久福利视频导航| 国产精品国产三级国产aⅴ入口| 亚洲高清免费视频| 久久免费视频在线观看| 亚洲一区二区在线看| 欧美久色视频| 亚洲精品永久免费|