C++程序设计学习总结

C++课程设计学习总结c++课程设计到现在已经结课了,在这段期间有学习了很多新的知识还有感想。对于大多数知识都从一点儿也不懂到一知半解又到了可以初步运用,但是大部分知识到达熟练掌握还是有一定的差距。所以很多知识还是需要更多的运用更多的练习才能够熟练掌握。在后来的这一部分时间中我学习的知识总共分为三大章:运算符重载、组合与继承、虚函数与多态性。
运算符重载:
听老师讲,这是c++中最好用的部分了,其他语言都没有这一部分内容。运算符重载提供了一种语法上的方便,用户可以为自己的类型定义运算符函数,并对对象进行操作。当运算符被用于类类型的对象时,重载的运算符为其指定了新的含义。运算符重载可以看作是一种特殊的函数:操作数是函数的参数,运算结果是函数的返回值。定义重载运算符与定义普通函数类似。而其参数个数取决于:运算符的操作数个数、运算符函数是成员函数还是非成员函数。使用成员函数重载二元运算符,将当前对象作为左操作数,只需要提供一个参数作为右操作数。由于进行类运算时往往要访问类的私有函数,所以一般将非成员运算符函数声明为类的友元。
重载运算符被使用的同时也有着限制,只有c++预定义运算符集合中的运算符才能被重载;c++有些运算符不能被重载:作用域解析符::、成员选择符.、尘缘指针间接引用符.和条件运算符?: ;不能定义c++中没有的运算符;内置类型的运算符的预定含义不能变,也不能为内置数据类型定义其他运算符;重载运算符不能改变运算符的优先级和结合性;重载运算符不能改变运算符操作数的个数。
可重载的运算符
一元运算符: + - & * ++ –
算数运算符: + - * / %
关系运算符: == != < <= > >=
逻辑运算符: ! && ||
位运算符: & | ^ << >>
赋值运算符: = += -= = /= %= ^= |= <<= >>=
其他运算符: [] () -> ->
, new new[] delete delete[]
在运用重载运算符的时候要慎用。运算符重载虽然为使用自定义类型提供了语法上的方便,但是不能滥用。只有当用户自定义类型上的操作与内置运算符之间存在逻辑对应关系时,重载的运算符才能使程序显得更加自然直观。运算符函数的参数和返回类型。对于类类型的参数,如果仅仅知识读参数的值而不改变参数,应该定义为const引用来传递。返回值类型取决于运算符的具体含义。所有赋值运算符均噶便左值。关系运算符最好返回bool值。使用临时对象语法的效率更高,这种语法也被称为返回值优化。非成员运算符和成员运算符。使用成员运算符的限制使左操作数必须使当前类的对象,左操作数不能进行自动转换类型,而非成员运算符为两个操作数都提供了转换的可能性。因此,如果左操作数使其他类的对象,或是希望元素安抚的两个操作数都能进行类型转换,则使用非成员函数重载运算符。
一般重载运算符对于我来讲用的最多的就是重载输入输出符来进行整体输入输出。
一般重载的operator>>以及operator<<对象如下:
Istream& operator>>(istream& is,type& t)
Ostream& operator<<(ostream& os,type& t)
重载下标运算符。有些类的对象可以像数组一样操作,可以为这样的类提供下标运算符。
运算符重载大致基础内容便是如上了。感想,运算符重载为使用自定义提供了语法上的方便,但是不能滥用。只有在至少一个操作数使用户自定义类型时才能被调用。运算符重载的行为应尽量与内置运算符保持一致。根据运算符之间的联系重载相关的运算符。运算符可以是成员函数也可以是非成员函数,一般原则如下:
一元运算符--------成员函数= [] () -> ->

类型转换---------必须时成员函数
复合赋值运算符-----------成员函数
其他二元运算符----------非成员函数
输入输出运算符<<和>>------------非成员函数
组合和继承:
面向对象方法的核心概念是封装、继承和多态性。c++语言中提供了数据抽象、继承和动态机制支持面向对象的程序设计。以类和对象多围程序的基本构造块,利用各种关系组织类和对象,以解决更复杂的问题。
组合在现阶段的应用就是,先定义一个数据类型,然后再定义一个操作类型,在操作类里面及将数据类定义为vector类型来储存数据以及操作这些数据。继承就是将两个及以上类共有的部分单独拿出来写一个类,剩下的类来继承这个类,基类里面的内容就不需要重复定义了,可以大大减少工作量。
继承,就是在已有类的基础上继承得到新类型,这个新类型自动拥有已有的类型,并可以修改继承到的特性或者增加自己的新特性。被继承的类叫做基类,继承到的新类叫做派生类。派生类可以被在继承,这样构成的层次结构称为继承层次。在继承的时候,基类成员里面的内容可能包含私有成员,派生类直接复制过来但是不一定能够使用。
Class 基类{Private:A;Protect:B;Public:Void c();}
Class 派生类:public 基类
在这个基类中,继承类可以直接访问的是b和c。但是abc都已经复制到派生类中。c被称为公有继承,而ab则是私有继承。若在派生类中重新定义了a、b或c的话,那就是覆盖,原有的内容被覆盖。
组合与继承都是复用已有的类的机制。派生类将继承基类的所有成员,成员在派生类中的可见性有它在基类中的访问权限和继承时使用的访问限定符决定。共有派生类继承了基类的接口,是积累的子类型。
虚函数与多态:
多态性是面向对象方法中除数据抽象和继承之外的又一个核心特征,同时也是以封装和继承为基础的一项强大机制。多态性提供了几口与实现之间的另一层隔离,使得接口与实现之间根据类型信息进一步解耦,从而在很大程度上改善了代码的结构和可读性。
虚函数。基类在成员函数声明语句之前加上virtual关键字使得该函数执行动态绑定。 virtual 返回类型 成员函数名(参数表) 动态绑定只对虚函数起作用,并且只有在使用含有虚函数的基类地址调用时发生。
派生类中可以重新定义基类的虚函数,称之为覆盖。将基类中的某一函数声明为虚函数,程序的运行结果将会发生很大的变化。派生类对基类函数调用使用动态绑定机制,且根据实际指向的对象类型来实施函数调用。同样是通过基类引用发送相同的函数消息,却产生了不同的结果,即多态性。
多态性可以为程序带来更大的灵活性和课扩展性。
虚函数机制在构造函数和析构函数中不起作用。构造函数不能是虚函数,析构函数可以是虚函数。基类的析构函数如果声明为虚函数,其他派生类的析构函数即使不加virtua也是虚函数。
现多态性的一般步骤:1. 在基类中将需要多态调用的成员声明为virtua。2. 在派生类中覆盖基类的虚函数,实现各自需要的功能。3. 用基类的指针或引用指向派生类对象,通过基类指针或引用调用虚函数。
面对对象的核心概念是封装、继承和多态性。通过基类指针或隐痛调用虚函数时,会根据指针或引用实际指向的对象类型来解析函数的调用。
c++这一门课程到现在已经结束了,在学习这一门课程中经历了成功与失败,挫败和成就终是将这一门课程学习完毕。经过了这半年的学习已经初步掌握了c++中的皮毛,对于程序设计也有了一部分心得和基础,也可以单独设计一些简单的小程序和小系统了。但是对于熟练还是有很大距离,所以以后还是需要多加的练习,以希望能更熟练的掌握这一门语言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值