第七章 類和對象介紹
1. 函數名以小寫字母開頭,之後單詞大寫字母開頭;用戶定義類以大寫字母開頭,之後也是大寫字母開頭
2. 接口與實現的分離
3. 局部變量聲明在函數體中,只作用於當前函數,數據成員對類的所有成員函數均可訪問
4. String類的實現
簡單實現-參考
http://rsljdkt.iteye.com/blog/770072
第八章 類的深入剖析
1.等價於#program once
#ifndef TIME_H //如果沒有定義
#define TIME_H
……
#endif
2.析構函數-在系統回收對象的內存之前執行掃尾工作,使得內存可以重新用於存儲新的對象,並不釋放對象的存儲空間
3.Time類-一個最基本的類
1.h
#ifndef TIME_H
#define TIME_H
class Time
{
public:
Time(int =0,int =0,int =0);//生命Time構造函數
void setTime(int ,int ,int);
void setHour(int);
void setMinute(int);
void setSecond(int);
int getHour();
int getMinute();
int getSecond();
void printStandard();
private:
int hour;
int minute;
int second;
};
#endif
1.cpp
#include <iostream>
#include "1.h"
using namespace std;
Time::Time(int hr,int min,int sec)
{
setTime(hr,min,sec);
}
void Time::setTime(int h,int m,int s)
{
setHour(h);
setMinute(m);
setSecond(s);
}
void Time::setHour(int h)
{
hour=(h>=0&&h<24)?h:0;//初始化
}
void Time::setMinute(int m)
{
minute=(m>=0&&m<60)?m:0;
}
void Time::setSecond(int s)
{
second=(s>=0&&s<60)?s:0;
}
int Time::getHour()
{
return hour;
}
int Time::getMinute()
{
return minute;
}
int Time::getSecond()
{
return second;
}
void Time::printStandard()
{
cout<<getHour()<<": "<<getMinute()<<": "<<getSecond()<<endl;
}
2.cpp
#include <iostream>
#include "1.h"
using namespace std;
void main()
{
Time t1;
Time t2(2);
t1.printStandard();
t2.printStandard();
}
3.友元函數和類friend
在類的作用域以外定義卻具有訪問類的非public成員的權限,單獨的類/函數都可以被聲明爲另一個類的友元。在類的定義中函數原型前+friend
#include <iostream>
using namespace std;
class Count
{
friend void setX(Count &,int);//友元聲明
public:
Count()
:x(0)
{
}
void print() const
{
cout<<x<<endl;
}
private:
int x;
};
//在類的作用域以外定義
void setX(Count &c,int val)
{
c.x=val;
}
void main()
{
Count counter;
counter.print();//0
setX(counter,8);
counter.print();//8
}
4.this指針-訪問自己的地址
this->x == (*this).x
5.使用new,delete對內存進行動態管理
Time *timePtr;
timePtr=new Time;
……
delete timePtr;
int *array=new int[10];//可在類的構造函數中
……
delete [] array;//可在類的析構函數中
6.static 類成員
只在類的作用域內起作用,類的private、protected的static成員通常通過類的public成員函數或者類的友元訪問
當沒有任何類的對象存在時,類的static成員依然存在
7.容器類container和迭代器iterator
參考詳細介紹http://blog.csdn.net/nancy_m/article/details/8073013