博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初涉c++学习笔记
阅读量:5877 次
发布时间:2019-06-19

本文共 3053 字,大约阅读时间需要 10 分钟。

这几天真的太忙了,连博客都忘记写了。

想来已经半个月没有写了。毕业设计真的是应该早点去搞,等到要赶设计的时候,总有力不从心的时候。毕竟一心两用后果自负!本来想把之前学的socket还有附带的做的项目整理出来的,只能看看有没有时间了。现在必须把c++眼前的东西好好整理了。人都是靠逼出来的。废话不多说。

——————————————————————————————————————————————————

    想学习c++就应该去了解c和c++之间的区别,才能更加快速的切入c++学习。

    c语言是面向过程的,而c++是既可以面向过程,还可面向对象和泛型编程。从感觉上,c语言的对问题的解决主要靠对问题各个地方的了解,很操心实现的过程。面向过程的是(程序=算法+数据结构),面向对象则是(对象:数据结构+算法;程序=(对象+对象+对象+。。。)<-对象之间的通信机制)(封装,继承,多态)

    对于大工程,using namespace 会很好的解决c语言的命名空间不够用的,很繁琐的缺点。

    c++强大的库,加上重载机制,编程起来真的很方便!

    细节方面:&(引用),一个变量可以有多个引用,但是&并不占内存但是c语言取地址(&)需要赋给一个指针(占有内存)。(http://m.blog.csdn.net/article/details?id=10260339)

    重载,函数重载,运算符重载:对于函数重载,对于类似功能但是入参不可能不太一样的时候,函数重载带来了方便,编译器会判定入参类型,来匹配相应的函数。__mul__int__int;__mul__float__float__。运算符重载,就是对对象运算的机制,c语言不支持运算符重载。c++对于对象的适用性很强。这也是c++的优点。

    还有一些区别在与结构体和类,还有new,delete----mallco,free,类分共有私有和保护,但是结构体没有这样的区别,类很好的保护类内部数据。new和delete其实就是像构造函数和析构函数,mallco,free需要自己取计算字节大小,c++更加方便。

    还有就是内联函数(inline) 五句以下使用频率非常高可以主动嵌入到主调函数中。

不知道有没有错误。。。大致的区别就是这样。总得来说c++更加适合软件开发大方向,c语言则是软件开发的小细节。

——————————————————————————————————————————————————

讲到c++就不得先说类这个概念OOP思想经典模型,就是抽象,封装,分类,多态。对象的抽象就是类,对象就是类的具体化。   

    构造函数:

    是一种特殊的成员函数,主要完成对象的初始化工作的。

    --添加2017-04-12 10:12:42--构造函数可以用来完成对象创建之后不方便完成的事,赋予对象合理的初始值,最好使用参数列表来实现赋初值,提高效率。

    特点:
    1.没有返回值
    2.函数名必须和类名相同
    3.如果没有定义构造函数,创建对象时,系统会自动提供默认的无入参的构造函数,如果自己定义了构造函数,创建对象时,系统调用的是自己定义的构造函数,而不会用默认的构造函数
    4.构造函数无需显示调用(以函数名的方式调用),在创建对象的时候,会自动调用相应的构造函数。
    5.构造函数可以重载
    6.可以用参数列表对成员变量进行初始化。

    拷贝(复制)构造函数:

    用另外一个对象给当前对象进行初始化,如果用户没有自定义拷贝构造函数,系统会提供默认的拷贝构造函数,如果用户自定义拷贝构造函数,系统将会调用自定义的拷贝构造函数,而不会用默认的拷贝构造函数。
    深拷贝构造函数与浅拷贝构造函数:
    涉及到堆内存数据之间的拷贝构造,就叫做深拷贝,其他叫做浅拷贝。
    定义类的时候,C++默认有:
    1.构造函数
    2.析构函数
    3.拷贝构造函数
    4.= 运算符的重载
    5.& 运算符的重载

    限制构造函数:

    构造函数定义成非公有的,该类无法定义对象。(因为定义对象的时候会自动调用构造函数,而构造函数是非公有的,在类的外部无法访问,所以无法创建类的对象)(ps之类的说明也很少,以后记得找找写一篇博文)

    析构函数:
    特殊的成员函数,作用是对象的生命周期结束的时候,析构函数可以回收对象的资源,或者完成清理工作
    特点:
    1.没有返回值
    2.函数名是类名前面加~
    3.没有入参,不能重载析构函数
    4.如果没有定义,会提供默认的析构函数,如果定义了,就用自己定义的析构函数
    5.能自己调用构造函数,只是在执行析构函数体中的内容。
    6.在对象的生命周期结束的时候会自动调用析构函数释放对象的内存。
    7.如果对象在栈里面,析构函数和构造函数的执行顺序是相反的(先进后出)。一般情况析构和构造函数的顺序是相反的,特殊情况,需要考虑先释放动态数据区,再释放静态数据区的内存。
上面是类在生成对象的一些最基本的函数,再说说最需要的封装:

  private的成员是在类内可以被操作,类外是不能访问的。只用通过共有函数进行操作,但是操作的时候也会破坏数据安全,那就有了const。除了共有函数,还有友元函数,mutable关键字修饰的变量可以破坏封装。

    1.const 修饰成员变量
    只能通过初始化列表进行const成员变量的初始化,而且不能在构造函数中对其进行赋值。Demo::Demo(int val): ival(val){}
    2.const 修饰成员函数
    不能通过该成员函数修改成员变量的值,即使成员变量是非const,说到底就是不能改数据,只能显示数据。
    3.const 修饰类的对象(定义 常对象)
    该对象的成员函数和成员变量都是只读的,无法修改。且普通成员函数(非构造和析构函数)必须被const修饰,防止在成员函数中修改成员变量。

 再说一个静态成员static修饰的成员。被该类的对象所共有,不能被初始化列表定义,但是可以直接通过类名::成员名调用。

    mutable修饰的变量就算是const 修饰了还可改变。看起来很牛逼。

    友元:friend,好盆友就是牛逼,可以动你的东西还不说一声。友元函数,并非类自己的函数,而是别的函数,friend最好少用啊。

 

————————————————————————————————————————————————

添加委托调用构造函数:

class Teacher{public:    // 带参数的构造函数    Teacher(int x)    {        // 判断参数是否合理,决定赋值与否       if (0 < x && x <= 100)             m_nAge = x;        else              cout<<"错误的年龄参数"<
C++

在构造函数后面加“:”后面跟构造函数,那就是委托调用构造函数;

转载于:https://www.cnblogs.com/mrAAron/p/6693673.html

你可能感兴趣的文章
关于浏览器的cookie
查看>>
Hyper-V 2016 系列教程30 机房温度远程监控方案
查看>>
.Net 通过MySQLDriverCS操作MySQL
查看>>
JS Cookie
查看>>
ubuntu Unable to locate package sysv-rc-conf
查看>>
笔记:认识.NET平台
查看>>
cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)
查看>>
【吉光片羽】短信验证
查看>>
MacBook如何用Parallels Desktop安装windows7/8
查看>>
gitlab 完整部署实例
查看>>
GNS关于IPS&ASA&PIX&Junos的配置
查看>>
七天学会ASP.NET MVC (四)——用户授权认证问题
查看>>
upgrade to iOS7,how to remove stroyboard?
查看>>
影响企业信息化成败的几点因素
查看>>
SCCM 2016 配置管理系列(Part8)
查看>>
zabbix监控部署
查看>>
struts中的xwork源码下载地址
查看>>
Android硬件抽象层(HAL)深入剖析(二)
查看>>
CDays–4 习题一至四及相关内容解析。
查看>>
L3.十一.匿名函数和map方法
查看>>