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

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>
              亚洲综合999| 久久中文字幕导航| 99国产精品久久久久久久| 欧美护士18xxxxhd| 99精品国产福利在线观看免费| 亚洲精品欧美一区二区三区| 欧美日韩在线看| 性欧美精品高清| 久久九九国产精品| 亚洲人成人一区二区三区| 亚洲日本欧美| 国产精品免费看片| 久久婷婷国产综合精品青草 | 久久亚洲一区二区三区四区| 久久亚洲视频| 一本久久综合| 欧美在线视频免费观看| 亚洲欧洲一区二区三区久久| 一个色综合av| 在线看欧美日韩| 9色精品在线| 狠色狠色综合久久| 亚洲人久久久| 国产视频久久久久久久| 亚洲国产91精品在线观看| 国产精品国产自产拍高清av| 免费成人黄色| 国产精品美女主播在线观看纯欲| 久久久久欧美| 欧美性事免费在线观看| 美女任你摸久久| 国产精品久久久久久久久搜平片 | 午夜久久美女| 麻豆av福利av久久av| 亚洲欧美日韩国产精品| 久久伊人免费视频| 久久成人综合视频| 欧美日韩一区二区三区在线看 | 欧美在线观看视频在线| 欧美大片91| 开心色5月久久精品| 国产精品va在线播放我和闺蜜| 裸体歌舞表演一区二区| 国产伦理一区| 在线亚洲高清视频| 99成人免费视频| 久久婷婷影院| 久久在线视频在线| 国产麻豆精品久久一二三| 99精品国产99久久久久久福利| 亚洲国产精品t66y| 久久久蜜臀国产一区二区| 欧美一级免费视频| 国产精品毛片一区二区三区| 亚洲精品日韩一| 日韩一级裸体免费视频| 欧美大片在线观看一区二区| 麻豆成人精品| 永久久久久久| 裸体一区二区| 亚洲第一视频网站| 亚洲人成人一区二区在线观看| 久久精品一区二区国产| 裸体丰满少妇做受久久99精品| 国产亚洲欧洲一区高清在线观看 | 麻豆精品视频| 136国产福利精品导航| 久久久久国产免费免费| 免费成人在线观看视频| 亚洲福利专区| 欧美福利一区二区三区| 亚洲精品老司机| 中日韩高清电影网| 国产精品久久久一区二区| 亚洲一区日韩在线| 久久精品在线| 亚洲高清一区二区三区| 欧美不卡在线视频| 日韩亚洲一区在线播放| 亚洲欧美综合精品久久成人| 国产日韩精品电影| 久热精品视频| 亚洲理伦在线| 亚洲一区三区视频在线观看| 国产精品自拍三区| 久久午夜羞羞影院免费观看| 亚洲国产乱码最新视频| 亚洲一区国产一区| 国产午夜精品美女视频明星a级| 久久精品免费| 亚洲精品国产精品乱码不99按摩| 亚洲欧美日韩精品在线| 国产一区二区在线观看免费| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲乱码国产乱码精品精可以看 | 久久不见久久见免费视频1| 今天的高清视频免费播放成人| 欧美成人精品在线| 亚洲伊人观看| 亚洲国产日韩欧美| 欧美一区中文字幕| 亚洲欧洲一区二区三区在线观看| 国产精品h在线观看| 久久久久一本一区二区青青蜜月| 亚洲精品欧美日韩专区| 久久精品国产亚洲a| 亚洲精品网址在线观看| 国产日韩高清一区二区三区在线| 男女av一区三区二区色多| 亚洲永久免费视频| 91久久精品国产91久久| 久久国产精品一区二区| av成人免费| 在线精品亚洲一区二区| 国产精自产拍久久久久久蜜| 美女精品在线观看| 欧美一区二区三区喷汁尤物| 91久久中文| 久久综合亚洲社区| 欧美一区午夜精品| 亚洲素人一区二区| 亚洲人成在线播放| 狠狠色丁香久久综合频道| 国产精品家庭影院| 欧美日韩免费一区二区三区视频| 久久九九国产| 久久av免费一区| 亚洲欧美伊人| 亚洲在线一区二区| 亚洲精品护士| 亚洲人成网站在线播| 欧美成熟视频| 欧美成人视屏| 免费国产一区二区| 蜜桃伊人久久| 美女露胸一区二区三区| 久久久在线视频| 久久久精品一区| 久久精品一区二区三区不卡牛牛| 午夜精品久久久久久| 午夜老司机精品| 亚洲欧美久久久久一区二区三区| 亚洲伊人网站| 亚洲欧美日韩一区在线| 亚洲欧美日韩综合一区| 欧美亚洲一区在线| 久久成人免费网| 久久亚洲图片| 欧美激情日韩| 亚洲精品网站在线播放gif| 日韩午夜电影av| 亚洲视频在线免费观看| 午夜精品免费视频| 欧美在线综合视频| 老司机免费视频一区二区三区| 欧美成人蜜桃| 欧美日韩视频在线一区二区 | 欧美日韩综合久久| 国产精品私人影院| 韩国精品在线观看| 亚洲激情在线激情| 国产精品99久久久久久有的能看| 亚洲欧美日韩中文视频| 久久久另类综合| 欧美大片一区二区三区| 亚洲精品国产精品国自产在线| 中文精品视频| 欧美一级片在线播放| 久久久午夜电影| 欧美精品一区二区三| 国产精品亚洲综合色区韩国| 激情综合视频| 亚洲在线黄色| 美女国产一区| av成人免费| 久久国产成人| 欧美另类综合| 海角社区69精品视频| 日韩亚洲精品电影| 久久久成人网| 亚洲精品免费网站| 久久aⅴ国产欧美74aaa| 欧美日韩理论| 在线成人免费观看| 亚洲综合色在线| 欧美国产国产综合| 亚洲欧美在线一区二区| 欧美高清免费| 伊人久久亚洲美女图片| 亚洲一区二区成人| 欧美黄色免费| 久久激情视频久久| 国产精品红桃| 夜夜嗨av一区二区三区四季av | 久久一日本道色综合久久| 一级日韩一区在线观看| 免费亚洲视频| 尤物yw午夜国产精品视频| 小辣椒精品导航| 99视频在线观看一区三区|