初涉类与对象

类是在结构体的基础上发展而来的。

类的说明语句的一般形式为:

class <类名>

{

public:

公有段数据成员和成员函数(公有成员是类的接口,在类中和类外可见)

protected:

保护段数据成员和成员函数(保护成员在类和它的派生类中可见)

private:

私有段数据成员和成员函数(私有成员只能在类中可见,不能在类外或它的派生类中可见,若私有成员放在第一段,则可以省略关键字private)

}

例如,一个日期类的说明如下:

class Date

{

public:

void SetData(int y,int m,int d);

int IsLeapYear();                         //判断是否是闰年

void PrintData();

private:

int year,month,day;

};

Data类的成员函数在类外写为:

void Data::SetData(int y,int m.int d)

{

year=y;

month=m;

day=d;

}

int Data ::IsLeapYear()

{

return(year%4==0&&year%100!=0||year%400==0);

}

void Date::PrintData()

{

cout<<year<<","<<month<<","<<day;

}

简单的成员函数实现可以在类中定义,此时,编译器作为内联函数处理。

对象成员的使用方式与结构相同


对象成员的访问形式与访问结构的形式相同,运算符"."和"->"用于访问对象成员

this指针

当一个对象调用类的数据成员时,对象的地址被传递给this指针,即this指针指向了该对象。this指针是一个隐含指针,不能显式说明,但可以在成员函数中显式使用

Tclass的成员函数print可以这样写:

void Tclass::print()

{

cout<<this->x<<","<<this->y<<endl;

}

this指针的显式使用主要在运算符重载、自引用等场合。

this指针是一个长指针,相当于:

class_Type* const  this;

其中,class_Type是用户定义的类类型标识符。

构造函数

构造函数名与类名相同。可以有任意类型的参数,但不能有返回值。构造函数在建立类对象时自动调用。

析构函数

与构造函数对应的时析构函数。析构函数是在类名前冠以一个波浪号"~",析构函数没有参数,也没有返回类型,析构函数在类对象作用域结束时自动调用。

以日期类为例

Date::Date(int y,int m,int d)    //构造函数

{

year=y;

month;

day=d;

}

Date::~Date()    //析构函数

{}

重载构造函数

构造函数允许重载,以日期类为例

class Date

{

public:

Date();

Date(int);

Date(int int);

Date(int int int);

~Date();

}

 复制构造函数

创建对象时,有时希望用一个已有的同类型的数据对它进行初始化。C++可以完成类对象数据的简单复制。用户自定义的复制构造函数用于完成更为复杂的操作。

格式:类名::类名(const 类名 const 引用名)。

常对象

在定义类的说明语句中以const作前缀,则该对象称为常对象,该对象的全部数据成员在作用域中约束为只读。

常成员函数

定义时以const作为后缀,const成员函数的函数体代码不能修改this所指对象的成员。

静态数据成员

当数据成员冠以static时,称为静态成员。“静态“是指它的作用域局部于类。

一般数据成员在说明对象时建立内存,但static数据成员的存储空间的建立不依赖于对象,即不论创建多少对象,都不会创建static数据成员的存储空间。

静态成员函数

当一个函数冠以static声明时,称为静态成员函数,它没有this指针,因为它只能访问类的静态数据成员。


感悟:编写类程序时要循序渐进,编译一处运行一处,切忌一次性全部写完,其次,在写代码前先要有一个清晰的思路,形成一个清晰的框架。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值