#include <iostream>

usingnamespacestd;

//面向对象的程序设计思想

//出发点:为了弥补面向过程程序设计的一些缺点。它的主要活动集中在建立对象和对象之间的联系上,从而完成所需要的计算

//面向对象的程序设计。最大的特点是:能够大幅度地提高软件项目的成功率,减少以后的维护费用,提高软件的可移植性和可靠性

//主要包括以下几个方面:

//1、对象的使用--对象的概念被广泛地使用在建模到构建程序的各个方面。

//2、抽象化--将各种独立的操作分解成为可以用命名区分的单元。

//3、封装性--不同的操作具有不同的作用范围。

//4、多态性--对于不同数据类型的相似操作使用相同的命名

//5、继承性--类可以被继承,从而实现不同层次的对象


//这个是一个结构体的声明方式

struct TimeStruct
{
int iSecond;
int iMinute;
int iHour;
};




//这是一个类的声明方式:

class timeClass
{
private:
int m_Second;
int m_Minute;
int m_Hour;
//这个变量的存在是为了方便大家查看类型所占内存空间。
// int a;
public:
void setTime(int _second,int _minute, int _Hour)
    {
m_Second = _second;
m_Minute = _minute;
m_Hour = _Hour;
    }
void PrintTime()
    {
cout<<m_Hour<<":"<<m_Minute<<":"<<m_Second<<endl;
    }
};


main函数:

int main(int argc, constchar * argv[])
{
TimeStruct morningTime,afternoonTime;
cout<<"查看结构体所占用的空间:"<<sizeof(morningTime)<<endl;
    morningTime.iHour = 3;
    afternoonTime.iHour = 19;
cout<<"morningTime.iHour ="<<morningTime.iHour<<endl;
cout<<"afternoonTime.iHour = "<<afternoonTime.iHour<<endl;
//下面创建的对象是一个类型而不是指针,区别在于类型的占用的内存空间,是由类内部有多少数据类型决定的。可以将上面注释的变量解开看看之后,所占用的控件
timeClass morningTimeClass;
cout<<"查看类型所占用的空间:"<<sizeof(morningTimeClass)<<endl;
    morningTimeClass.setTime(2, 4, 5);
    morningTimeClass.PrintTime();
timeClass* morningTimeClassA = newtimeClass();
cout<<"查看指针所占用的空间:"<<sizeof(morningTimeClass)<<endl;
    morningTimeClassA->setTime(3, 4, 5);
    morningTimeClassA->PrintTime();
return0;
}

代码下载地址:http://pan.baidu.com/share/link?shareid=701905370&uk=3189484501

http://vdisk.weibo.com/s/FA4pz




访问权限与类外函数实现





//如何设置类成员的访问权限:

//private:私有成员,只能在类中的被访问,在类外不能访问私有成员。

//public:公有成员,在类中和类外都能被访问,通常将成员函数定义为公有的,用于提供对类外访问类中私有成员的接口

//protected:保护成员,具有公有和私有的共同特性,即保护成员只能被类内和派生类中成员访问,在类外不允许被访问。


class timeClass
{
private:
int m_Second;
int m_Minute;
int m_Hour;
public:
void setTime(int _second,int _minute, int _Hour);
//函数重载,什么是函数重载就是方法名相同,但参数不同,在C++中就是两个方法。
void setTime();
void PrintTime()
    {
cout<<m_Hour<<":"<<m_Minute<<":"<<m_Second<<endl;
    }
};



voidtimeClass::setTime()
{
m_Second = 0;
m_Minute = 0;
m_Hour = 0;
}
//这是在类外定义成员函数
voidtimeClass::setTime(int _second,int _minute, int _Hour)
{
m_Second = _second;
m_Minute = _minute;
m_Hour = _Hour;
}




int main(int argc, constchar * argv[])
{
timeClass tempTime;
    tempTime.setTime();
    tempTime.PrintTime();
    tempTime.setTime(34, 23, 1);
    tempTime.PrintTime();
return0;
}

代码下载:http://pan.baidu.com/share/link?shareid=1252351212&uk=3189484501


第一章1.2类和对象.zip" http://vdisk.weibo.com/s/FAVgE



this指针



//原来当调用成员函数setTime的时候,成员函数除了接受3个实参外,还接收一个对象AB的地址,这个地址被隐含的形参this指针所取得,然后所有对数据成员的访问,前面都隐含地被添加了this->前缀,所以setTime()函数的实现应该如下:


voidtimeClass::setTime(int _second,int _minute, int _Hour)
{  
this->m_Second = _second;
this->m_Minute = _minute;
this->m_Hour = _Hour;
}


代码下载:http://pan.baidu.com/share/link?shareid=1288076888&uk=3189484501

Hi,推荐文件给你 "第一章this指针.zip":   http://vdisk.weibo.com/s/FAY5I