effective C++ 读书笔记(0-2)
1:?
?const int * ptr 指向常量(read only)的指針
? ? ? ?對(duì)指針重新賦值可以
? ? ? ?對(duì)指針指向的內(nèi)容重新賦值不行
?int * const ptr 指向的指針常量
2:?
? ? ?在類(lèi)的聲明中 聲明一個(gè) static const 型成員變量 是可以的
? ? ?class A
{
private:
static const int num = 5;
int Array[num];
};
這里對(duì)于變量 num 不需要 在定義就可以使用
但注意這里 只能聲明 const型的成員變量
對(duì)于 static 非const 成員變量
class A
{
private:
static int num = 5;
int Array[num];
};
這樣子會(huì)報(bào)錯(cuò)! ..\/basic.h:15:19: error: ISO C++ forbids in-class initialization of non-const static member 'num' ..\/basic.h:16:15: error: array bound is not an integer constant before ']' token解決辦法 就是在.cpp文件中 定義咯~
4:
?the enum hack
?看起來(lái)好像 這和 static const unsigned ?成員變量 沒(méi)什么區(qū)別
class A
{
public:
static const int num = 5;
enum {numEnum = 5};
int scores[num];
int shit[numEnum];
};
? 但實(shí)際上 enum 的內(nèi)容與define 很類(lèi)似?
? 取一個(gè) static const int 成員變量的值是合法的?
?但是取一個(gè) enum 或是 define 出來(lái)的變量的值是不合法的
int main()
{
A a;
cout<<&a.num<<endl;
cout<<&a.numEnum<<endl; ?//error!
return 0;
}
enum分配出來(lái)的東西不會(huì)導(dǎo)致額外的內(nèi)存分配 5: (1) 對(duì)于C-like 類(lèi)型而言 (也即是 內(nèi)置類(lèi)型) pass-by-value 往往比 pass-by-reference 高效 (2)但是對(duì)于C++ 來(lái)講 由于存在 構(gòu)造與析構(gòu)函數(shù) pass-by-reference-to-const 往往更高效 (3)對(duì)于template C++而言更是如此 應(yīng)為我甚至不知道所處理對(duì)象的類(lèi)型 所以pass-by-reference-to-const?比較好 #ifndef BASIC_H_ #define BASIC_H_ #include <iostream> using namespace std; class A { public: static const int num = 5; enum {numEnum = 5}; int scores[num]; int shit[numEnum]; template <class T> inline const T& callWithMax(const T& a,const T& b) { return (a>b?a:b); } }; class B { public : int a; inline bool operator >(const B &ref) const { return a>ref.a; } friend ostream& operator <<(ostream &os,const B &ref); B(int temp):a(temp){}; }; #endif /* BASIC_H_ */ #include "basic.h" ostream & operator <<(ostream & os,const B &b) { cout<<b.a<<endl; return os; } #include <iostream> #include <list> #include <map> #include "basic.h" using namespace std; int main() { A a; B b1(1),b2(2); cout<<a.callWithMax(b1,b2)<<endl; return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/wangshuai901/archive/2011/09/07/2169583.html
總結(jié)
以上是生活随笔為你收集整理的effective C++ 读书笔记(0-2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: win7或xp下常用命令
- 下一篇: C++重载一些需要注意的地方