这两天没事又翻了翻Primer,发现自己上岁数了,记单词能力开始下降,索引把一些简单的例子记下来,把一些肥肉剔除,剩一下骨头,方便今后Ctrl+F。
在此感谢:
http://ticktick.blog.51cto.com/823160/194307/
http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html
http://www.cnblogs.com/uniqueliu/archive/2011/08/02/2125590.html
一、类的初始化--构造函数。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 |
#include<iostream>#include<memory>#include<unistd.h>using
namespace std;class
Tree{public: int
data; int
data_arr[3]; double
hello; //无参数构造函数 //编译系统对象分配内存空间,并自动调用该构造函数->由构造函数完成成员的初始化工作 Tree(void) { hello=9.823; data=22; } //一般构造函数 Tree(double
a) { hello=a; } //复杂构造函数 Tree(const
Tree &c) { hello=c.hello; } //等号运算符重载构造函数 Tree &operator=(const
Tree &rt) { if(this==&rt) { return
*this; } this->hello=rt.hello; this->data=rt.data; return
*this; }private: int
price; int
num;};int
main(){ //一般构造 Tree a(233.33); cout<<a.hello<<endl; //复杂构造 Tree b(a); cout<<b.hello<<endl; //等号运算构造 Tree c=a; cout<<c.hello<<endl;} |
二、深、浅拷贝--防止DELETE二次错误。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 |
//深拷贝和浅拷贝#include<iostream>#include<memory>#include<string.h>#include<stdio.h>using
namespace std;class
Tree{public: Tree(char
*pN) { m_pName = new
char[strlen(pN) + 1]; if(m_pName) { strcpy(m_pName ,pN); } } Tree(Tree &p) { m_pName=new
char[strlen(p.m_pName)+ 1]; if(m_pName) { strcpy(m_pName ,p.m_pName); } } ~Tree() { delete
m_pName; }private: char
*m_pName;};int
main(){ Tree man("lujun"); Tree woman(man);} |
三、友元---我的世界你不懂,你的世界我能懂
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 |
#include<iostream>#include<memory>#include<string.h>#include<stdio.h>using
namespace std;class
TV{public: friend
class Control; TV():volume(20){} void
Show(TV &t)const;private: int
volume;};class
Control{public: bool
VolumeUp(TV &t); bool
VolumeDown(TV &t); void
Show(TV &t)const;};bool
Control::VolumeUp(TV &t){ t.volume++;}bool
Control::VolumeDown(TV &t){ t.volume--;}void
Control::Show(TV&t)const{ cout<<"经遥控器调整的音量大小为:"<<t.volume<<endl;}void
TV::Show(TV&t)const{ cout<<"TV自身音量大小为:"<<t.volume<<endl;}int
main(){ Control c1; TV t1; c1.VolumeUp(t1); c1.Show(t1); c1.VolumeUp(t1); c1.Show(t1); c1.VolumeDown(t1); c1.Show(t1); t1.Show(t1);} |
四、基类、派生、虚、多态----剪不断理还乱
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 |
#include <iostream>using
namespace std;//原始书籍类class
Quote{public: string isbn() const; virtual
double net_price(int
n) const; //返回实际销售价格 Quote(void) { price=9.987; }protected: double
price;};string Quote::isbn() const{ string aa="abcd,world"; cout<<aa<<endl; return
aa;}double
Quote::net_price(int
n) const{ cout<<n+20<<endl; return
n+20;}//打折书籍类class
BulkQuote:public
Quote{public: BulkQuote()=default; double
net_price(int
n) const
; //返回改动后的价格+自动覆盖};double
BulkQuote::net_price(int
n) const{ cout<<n+10<<endl; cout<<"n_price="<<n*price<<endl; return
n+10;}void
PrintAll(const
Quote &book); //根据实际传的类类型,进行动态鉴别int
main(){ Quote Father,*f; BulkQuote Son,*s; Father.isbn(); Father.net_price(100); cout<<endl; Son.isbn(); Son.net_price(100); cout<<endl; PrintAll(Father); PrintAll(Son);}void
PrintAll(const
Quote &book){ book.net_price(1000);}; |
五、类模板、容器模板--真心方便
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 |
#include <iostream>#include <vector>#include <list>using
namespace std;template<typename
T1,typename
T2>class
Tree{private: T1 I; T2 J;public: Tree(T1 a,T2 b); void
show();};template
<typename
T1,typename
T2>Tree<T1,T2>::Tree(T1 a,T2 b):I(a),J(b){}template
<typename
T1,typename
T2>void
Tree<T1,T2>::show(){ cout<<"I="<<I<<",J="<<J<<endl;}template
<typename
X>void
print(X v){ typename
X::iterator itor; for
(itor = v.begin(); itor != v.end(); ++itor) { cout<<*itor<<endl; }}int
main(){ Tree<int,int> t1(33,55); t1.show(); Tree<int,string> t2(99,"wenzhang"); t2.show(); Tree<double,string> t3(3.414,"mayili"); t3.show(); vector<int> v1; v1.push_back(2); v1.push_back(33); v1.push_back(44); print(v1);} |
六、tuple类型--自己也能MongoDB
|
1
2
3
4
5
6
7
8
9
10
11
12
13 |
#include <iostream>#include <tuple>#include <vector>#include <list>using
namespace std;int main(){ tuple<string,vector<double>,int,list<int> > aa("头条",{1.1,3.4},42,{3,4,5,6,7,9}); auto
item=make_tuple("play",3,99.239);<br> cout<<get<0>(item)<<endl; } |
原文:http://www.cnblogs.com/zacard-orc/p/3636959.html