第七、八章 類和對象

第七章 類和對象介紹

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章