类和对象学习总结

再次经过一段时间的学习,学完了第六章类和对象。类和对象是c++中很是重要的一部分。所以需要学习透彻。
对于类和对象的介绍:面向对象系统由一组交互的对象构成,每个对象都有自己的属性和行为,这些对象通过相互之间的消息传递来写作实现系统的功能。对象所属的类型称为类,类是一组具有相同属性和行为的对象的抽象。
类的基本思想是数据抽象和封装。数据抽象是一种依赖接口和实现分离程序的技术。类要实现数据抽象和封装,就需要先定义一个抽象数据类型(ADT)。而ADT由两部分组成:一组数据和对这些数据的操作。这时,就需要定义一个结构体类型的数据对象,再将它的地址传递给特定的函数来执行相应的操作。而结构体的函数成为成员函数,它的数据被称为数据成员。这样的结构体可以称之为类,这种结构体类型的变量被称为对象。
成员函数可以在类内定义,也可以在类外定义。在类外定义时,函数名字前面要加类名和作用域符“::”,表示这个函数实在其所属的类作用域内,是这个类的成员函数,不同于全局函数。
例:

//类定义
struct SalesDate{
//数据成员说明
string productNo;
double price=0.0;
unsigned unitSold=0;
//成员函数说明
double totalRevenue();
void read();
void print();
}//类定义结束
//成员函数的类外定义
double SalesDate::totalRevenue(){
return price*unitSold;
}
void SaleDate::print(){
cout<<productNo<<":"<<price<<" “<<unitsold<<” "<<totalRevenue()<<endl;
}

在组织代码时,一个类的定义通常分为两个文件:类及成员的声明放在头文件中,而将成员函数的类外定义放在源文件中,并且其中包含头文件。
类定义的头文件不能被重复包含,否则会引起错误编译。这时候可以使用预处理器指令防止类定义的措辞半酣,这些语句成为包含守卫。
不同的人要看待不同的问题,这个时候信息隐藏的必要性就体现出来了。
c++通过限定成员的访问权限来是设置边界,实现信息隐藏。访问限定符为:public,pricate,protected

struct 类名{
public:
共有成员声明;
private:
私有成员声明;
protected:
被保护成员声明;
};

public中成员谁都可以访问。
private成员只能由类自己的成员函数或友元访问。
protected成员的访问权限介于上面两者之间,主要用于继承中。
将数据和操作捆绑在一起,并加上访问控制,称之为封装。对象是客观事物的抽象,类是以自居于相同属性和行为的对象的抽象,最新又称为类的实例。类是一种数据类型,对象是这种类型的变量。面向对象编程的主要工作就是创建一组对象并给他们发送消息。对象能够持有的数据和接受由他们所属的类决定。所以类设计是面向对象编程的核心。c++引入class来定义类。

class SaleDate{
public: //类的接口
double totalRevence();
void read();
void print();
private://私有数据
std::string productNo;
double price=0.0;
unsigend unitSold=0;
};

 每个成员函数东欧偶有一个隐含的参数,指向接受消息的对象,成为this指针。this指针是一个常量,含有当前实施调用的对象的地址。
 this指针在成员函数的最常作用:
 1,区分与局部变量崇明的数据对象
 2,返回当前对象
 3,获取当前对象的地址
 类的有缘可以访问类的私有函数。在声明时:有缘必须在被访问的类中声名。
 在c++中,对象是指上就是一块存储区,在这块存储区中存放数据,并且隐含着对这些数据进行处理的操作。在创建对象时,这块存储区应该被合理化地初始化。
 构造函数时一种特殊的成员函数,能够在创建对象时被自动调用,负责对象的初始化。构造函数的初始化列表中初值的排列顺序不影响实际的初始化顺序,在定义时至少构造两个。
 委托构造函数就是把自己的一些或全部职责委托给了其他构造函数。
 析构函数负责在对象生存期结束时返回相关资源和自动释放资源。析构函数的名字时类名字前加波浪线“~”。析构函数没有返回类型,也没有任何参数。

//为账户上加上析构函数
class Account(
public:

~Account(); //析构函数
private:

};

const可以限定类中的数据成员,const一般用来描述对象中的常量。和内置类型的数据对象一样,一个类的对象也可以由const限定为常量。程序中任何试图修改const对象的操作都会引起编译错误。
避免强制类型转换的方法是将设计缓存管理的数据声明为mutable(易变的)。
在类的数据成员声明前加关键词static,就使该数据成员成为静态的。static成员仍然最寻访问控制规则。
这一学期关于c++的学习差不多已经到达一半时间了,对于c++的学习还是不甚了解,所以还是需要对于这个多下功夫,以求可以更好的学习程序设计这一门课程。所以还是需要再接再厉,更好的学习。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值