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

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

搜索

  •  

積分與排名

  • 積分 - 1811981
  • 排名 - 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>
              一区二区三区免费观看| 亚洲精品视频在线| 欧美一区二区三区在线看| 中日韩美女免费视频网址在线观看| 欧美日韩中文另类| 亚洲欧美电影院| 欧美一区二区三区在线免费观看 | 一区二区三区视频在线| 国产精品女主播在线观看| 久久精品论坛| 欧美激情bt| 欧美与欧洲交xxxx免费观看| 久久久久久久尹人综合网亚洲| 亚洲欧洲一区二区三区在线观看 | 99天天综合性| 国产午夜精品美女视频明星a级| 另类图片综合电影| 欧美日韩精品国产| 欧美亚男人的天堂| 久久久不卡网国产精品一区| 老鸭窝亚洲一区二区三区| 亚洲视频免费观看| 久久精品最新地址| 一区二区三区国产精华| 欧美与欧洲交xxxx免费观看| 亚洲国产午夜| 亚欧成人在线| 亚洲色诱最新| 久久久久久国产精品mv| 午夜精品久久久久久久99黑人| 久久精品噜噜噜成人av农村| 一本色道久久综合亚洲二区三区| 久久se精品一区精品二区| 在线视频日韩精品| 免费试看一区| 久久激情五月激情| 欧美午夜在线观看| 91久久久国产精品| 国产亚洲欧美日韩在线一区| 亚洲精品一区在线| 亚洲欧洲久久| 久久精品在线| 久久精品亚洲一区二区三区浴池| 欧美激情1区2区3区| 欧美91大片| 国产一区在线看| 亚洲欧美国产不卡| 亚洲免费在线视频一区 二区| 欧美成人黑人xx视频免费观看| 久久影院亚洲| 国产亚洲欧美激情| 午夜精品视频网站| 性亚洲最疯狂xxxx高清| 欧美日韩中文| 一区二区三区四区五区精品视频| 亚洲日本免费电影| 欧美成人日本| 亚洲成人资源网| 亚洲激情在线视频| 欧美成人一区二区三区在线观看| 欧美jjzz| 91久久精品国产91久久性色| 麻豆国产va免费精品高清在线| 久久久亚洲影院你懂的| 狠狠色综合网| 老司机免费视频久久| 蜜桃av一区二区三区| 亚洲国产黄色片| 女人香蕉久久**毛片精品| 亚洲国产欧美不卡在线观看| 亚洲精品免费一二三区| 欧美日韩国语| 亚洲在线观看| 久久免费偷拍视频| 亚洲二区视频| 欧美日韩国产在线一区| 亚洲午夜成aⅴ人片| 欧美一区二区精品在线| 国产亚洲免费的视频看| 久久尤物电影视频在线观看| 欧美激情91| 亚洲性线免费观看视频成熟| 国产精品色婷婷| 久久久久国产一区二区三区四区| 欧美激情导航| 亚洲欧美激情一区| 伊人久久亚洲美女图片| 欧美国产日韩一区| 欧美伊人久久| 亚洲国产日韩在线| 国产精品九色蝌蚪自拍| 久久久久国产精品www| 亚洲韩国青草视频| 欧美一级专区免费大片| 亚洲国产日韩欧美| 国产精品久久久久三级| 久久在精品线影院精品国产| 一区二区三区国产精品| 麻豆精品传媒视频| 亚洲一区久久久| 激情五月婷婷综合| 欧美日韩一区精品| 久久综合一区二区三区| 一区二区三区日韩欧美| 欧美高清在线观看| 性做久久久久久免费观看欧美| 亚洲国产精品小视频| 国产精品美女| 欧美连裤袜在线视频| 久久国产精品亚洲77777| 日韩一级视频免费观看在线| 麻豆91精品| 久久高清免费观看| 亚洲一区二区三区四区五区午夜| 亚洲成色精品| 国产一区二区三区高清| 欧美网站在线| 欧美日本三区| 欧美成人免费视频| 久久久久久久国产| 香蕉av福利精品导航| 夜夜嗨av色综合久久久综合网| 亚洲第一页自拍| 蜜桃av一区| 久久亚洲国产精品日日av夜夜| 亚洲欧美国产视频| 亚洲视频免费在线观看| 亚洲精品自在久久| 亚洲精品欧美| 亚洲精品中文字| 亚洲激情偷拍| 亚洲人成绝费网站色www| 在线观看欧美一区| 亚洲成在人线av| 亚洲大胆人体视频| 在线观看中文字幕亚洲| 一区二区三区在线视频播放| 国产中文一区二区| 好看的av在线不卡观看| 国产揄拍国内精品对白| 国产曰批免费观看久久久| 国产亚洲成人一区| 精品91在线| 1769国产精品| 亚洲精品视频在线播放| 99re8这里有精品热视频免费| 亚洲精品小视频在线观看| 亚洲美女色禁图| 野花国产精品入口| 亚洲欧美激情一区二区| 欧美影院视频| 你懂的国产精品| 亚洲国产精品ⅴa在线观看| 亚洲日本乱码在线观看| 亚洲美女区一区| 亚洲欧美成人一区二区三区| 午夜视频在线观看一区二区| 久久久国产精彩视频美女艺术照福利| 久久精品中文字幕一区| 欧美暴力喷水在线| 欧美午夜精品久久久久久孕妇| 国产欧美精品| 亚洲成色最大综合在线| 一区二区国产精品| 欧美一区在线直播| 欧美国产激情二区三区| 一本色道久久精品| 久久精品国产2020观看福利| 一区二区国产精品| 久久精品国产欧美亚洲人人爽| 欧美成人一区二区三区片免费| 欧美日韩一区在线| 黑人操亚洲美女惩罚| 99精品国产在热久久| 欧美一区二区高清| 亚洲第一主播视频| 午夜精品久久久久久久蜜桃app| 久久蜜桃精品| 国产精品乱码一区二三区小蝌蚪| 狠狠色狠狠色综合日日小说| 一本不卡影院| 久久影视精品| 亚洲一区二区三区中文字幕在线| 久久夜色精品国产亚洲aⅴ| 国产精品乱码一区二区三区| 亚洲国产成人精品女人久久久| 亚洲欧美日韩国产中文在线| 欧美高清视频免费观看| 欧美亚洲网站| 欧美日韩亚洲激情| 亚洲黄页视频免费观看| 久久国产日本精品| 一区二区三区国产精华| 欧美成人四级电影| 激情婷婷久久| 久久精品国产亚洲一区二区三区| 日韩一区二区精品| 欧美国产视频在线| 亚洲国产精品久久久久婷婷884 | 欧美中文字幕在线观看|