类的总结

类的总结

类的定义包括行为和属性两个部分,属性以数据表示,行为通过函数实现。类的实例称为对象,正如基本数据类型的实例称为变量一样,在程序设计中,“变量”与“对象”两个属于常常可以互换使用。在面向对象程序设计中,程序的基本单位时类。类时用户定义的数据和操作这些数据的函数的封装。类的对象使用自己的方法完成对数据的操作。c++中,属性用数据的储存结构实现,称为类的数据成员;方法用函数实现,称为成员函数。它们都是类的成员。使用对象包括访问对象的数据成员和调用成员函数。类中的成员函数可以使用自身不同性质的数据成员和调用成员函数。

  

    构造函数时用于创建对象的特殊成员函数,当一个对象作用域结束时,系统自动调用析构函数。析构函数的作用是进行对象消亡时的清理工作。没用用户定义析构函数时,系统提供缺省版本的析构函数。析构函数没用参数,也没有返回类型。

构造函数和析构函数的格式是:

类名::类名(参数表);

类名::~类名();

 

类设计技巧:

1、一定保证数据私有化

2、一定要对数据初始化

3、不要在类中使用过多的基本数据类型

4、不是所有的域都需要setter和getter

5、将职责过多的类进行分解

6、类的名字能体现他的职责 

 

C++允许将运算重载扩展到用户定义的类型要重载运算符,需使用被称为运算符函数的特殊函数形式

重载限制:

C++对用户定义的运算符重载的限制:重载后的运算符必须至少有一个操作数是用户定义的类型,这将防止用户为标准类型重载运算符。

注意事项:

1、使用运算符时不能违反运算符原来的句法规则

2、不能创建新运算符

 

访问控制和封装

SalesData 的成员可以通过结构体变量访问,不仅可以调用成员函数,也可以访问数据成员。

访问限定符:

C++通过限定成员的访问权限来实现信息隐藏

关键字public、private 和protected 被称为访问限定符

访问限定符在类定义中使用,一般语法为:struct 类名 { public: 公有成员声明; private: 私有成员声明; protected: 被保护成员声明; };

 

对象是数据和操作的封装体,数据描述对象的属性,操作描述对象的行为。

对象是客观事物的抽象,类是一组具有相同属性和行为的对象的抽象;外部程序通过类接口中提供的操作访问对象的数据,这称为向对象发送消息;同一个类的每个实例都有自己独立的数据,但是可以接收相同的消息。

sizeof 运算符可以用于类类型、对象和类的数据成员

数据成员按声明顺序储存;无数据成员的对象的大小至少是1。

class定义的类:如果class的成员没有设置访问限定符,则默认为private。

 

this 指针:每个成员函数都有一个隐含的参数,指向接收消息的对象,作为一个常量含有当前实施调用的对象的地址

this指针的用途:

1、区分与数据成员同名的变量

2、返回当前对象

3、取得当前对象地址。

 

有关析构函数和构造函数的几点说明:

构造函数和析构函数都不能被继承,因为构造函数和析构函数是用来处理对象的创建和析构的,它们只知道对在它们的特殊层次的对象做什么。所以,在整个层次中的所有的构造函数和析构函数都必须被调用而不能被继承。

构造函数可以重载,析构函数不可以重载

注意:

1、构造函数可以有参数,析构函数没有参数

2、构造函数不可以是虚函数,析构函数可以是虚函数

 

const

命名格式为:类名 const 对象名const 类名 对象名(实参表)

 定义t是常对象,在t的整个生命周期中,t的所有成员的值都不能被修改

t.get_time() 调用常对象t中的成员函数,非法操作

void get_time() const 定义一个const成员函数,可以访问const对象中的成员变量,但不允许修改成员变量的值

const对象成员:

   用const修饰的成员变量的值是不能改变的,只能通过构造函数的参数初始化表对成员变量进行初始化,任何其他函数都不能对成员变量赋值

命名格式为:const 变量类型 变量名       

const成员函数

const修饰的成员函数只能引用本类中的成员变量,而不能修改它们。const是函数类型的一部分,在声明函数和定义函数的时候都要有const关键字,在调用时不必加const

命名格式为:类型名 函数名(参数列表)const

void get_time() const 定义一个const成员函数,注意const在函数名和括号之后

   在一个类中,如果有些成员变量的值允许改变,另一些成员变量的值不允许改变,则可以将一部分成员变量声明为const,以保证其值不被改变,可以用非const的成员函数引用这些成员变量的值,并修改非const成员变量的值。

   如果要求所有的成员的值都不允许修改,则可以将所有的成员声明为const,或将对象声明为const,然后用const成员函数引用数据成员。

   如果已定义了一个const对象,只能调用其中的const成员函数,而不能调用非const成员函数(无论这些函数是否会修改对象中的数据)。如果需要访问const对象中的数据成员,可将const对象中的所有成员函数都声明为const成员函数,并确保在函数中不修改对象中的数据成员。

const对象只保证其数据成员是const数据成员,其值不被修改。如果在const对象中的成员函数未加const声明,编译系统把它当做非const成员函数处理。

const成员函数内可以调用其他的const成员函数,不能调用另一个非const成员函数。

    非const对象可以调用非const成员函数和const成员函数。

    非const成员函数内可以调用非const成员函数和其他const成员函数。

指向对象的const指针

将指针变量声明为const型,这样指针变量始终保持为初值,不能改变,即其指向不变

命名格式为:类名 * const 指针变量名

注意:

1、指向对象的const指针变量的值不能改变,即始终指向同一个对象,但可以改变其所指向对象(t1)的值。

2、如果想将一个指针变量固定地与一个对象相联系(即该指针变量始终指向一个对象),可以将它指定为const指针变量。往往用const指针作函数的形参,目的是不允许在函数执行过程中改变指针变量的值,使其始终指向原来的对象。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值