cpp自学手册_怎么自学cpp-程序员宅基地

技术标签: 编程语言(c/cpp/apue/sql/Enternet)  

C++快速自学手册

一.面向对象思想

Oop思想就是把所有的事物看做对象来处理。然后用类来建创建一个模型。面向对象的三大特征,封装、继承、多态。

注释:有的书上写函数 有的书上写方法,他们的意思都是一样的,还有的书上写属性,有的写成员,其实都以一个意思,不要被搞混了。

二.C++语法

1. 类的写法基本上跟C语言的结构体一样,比c的结构体多了可以写方法(也叫函数)的功能。但是c语言的结构体不能有方法(函数)。C++中用class替换struct ,class里面默认是私有的而struct默认是公有的.

2.构造函数:每个类都有一个构造函数,如果不写,那么系统会给你自动生成一个默认的构造函数(也就是没有任何参数的构造函数),但是里面没有任何的代码。

3.析构函数:在类被回收是系统调用的,基本上同构造函数一样,如果类中没有析构函数,那么系统会给我们分配一个,但是析构函数不能有 返回值和参数。

4.函数重载:在一个类中 函数名相同的两个函数,但他们的参数类型 和数量不同或参数类型的位置不一样,就叫做函数重载。

5.类的继承:一个类继承另外一个类的写法是 class A : public class B。这里面的冒号的作用就是左继承右,英文单词是extends 。如果一个类继承另外一个类,那么这个类就拥有了继承那个类的所有属性和方法。

6.访问修饰符:C++的访问修饰符一共有3个,publicprotectedprivate 

先介绍public :他的访问作用域是整个程序,在什么地方都能直接访问。Proetcted的访问限制是只有继承下来的子类也叫派生类才可以访问。Private修饰符只能是自己的类才能访问。

7.友元修饰符friend :友元修饰符只能加在方法和类的名字的前面,还必须在类中使用。他的作用是让一个类可以访问另外一个类的所有属性和方法,包括私有的。例子:

Class A{

firend class B;

Private:

Static Int no;

Public :

Void show(){}

};

Class B{

public:

void display(){

cout<<A::no<<endl;

};

2

class A{

private:

int no;

firend void show();

}; 

void show(){

cout<<no<<endl;

}

8.运算符重载:C++为我们提供了运算符重载的功能,那运算符重载的作用是实现类与类之间的加减乘除等。这样让我们操作类更方便。运算符重载的语法 void operator运算符(参数)。这里面要注意的是运算符重载在是有限制的能重载的( ÷ + - = ++ ―― <<  >>)不能重载的基本上都是逻辑运算符。重载是的运算符不能把它原先的意思改变。

9.内联函数:他的功能是为了简化重复次数比较多的代码段。

10.函数模板:

template<class type>

type sum(type x,type y){

return x+y;

}

在调用时 type类型必须是一样的。

11.虚函数和纯虚函数

虚函数的作用是:让父类能访问子类重写过的函数。这里要注意的是构造函数不能是虚函数,而析构函数可以是虚函数。如果在父类中的一个函数是虚函数,那么子类可以不用写virtual关键字,那么子类重写过的这个函数也是虚函数,但是建议在重写的时候加上virtual

关键字,以显示其父类是虚函数。

纯虚函数是一种特殊的虚函数,它的一般格式如下:

   class <类名>{

    virtual <类型><函数名>(<参数表>)=0;

    …   

}; 

在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。   

2、在很多情况下,基类本身生成对象是不合情理的。例如,水果作为一个基类可以派生出苹果、香蕉等子类,但水果本身生成对象明显不合常理。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a174787252/article/details/8104829

智能推荐

王斌老师的博客_王斌 github-程序员宅基地

文章浏览阅读480次。http://blog.sina.com.cn/s/blog_736d0b9101018cgc.html_王斌 github

ACM OJ Collection_htt//acm.wydtang.top/-程序员宅基地

文章浏览阅读737次。原文来自:http://blog.csdn.net/hncqp/article/details/4455263 ACM OJ Collection(排名不分先后):中国:浙江大学(ZJU):http://acm.zju.edu.cn/北京大学(PKU):htt_htt//acm.wydtang.top/

ios 自己服务器 苹果支付_修复苹果IOS支付-程序员宅基地

文章浏览阅读467次。更新记录1.0.0(2019-07-01)插件简介专门用来修复苹果IOS支付时出现"您已购买此App内购买项目。此项目将免费恢复"。问题描述首先在IOS平台里面创建“APP内购买项目”,选择的是“消耗型项目”,然后用uni-app官方的支付api进行支付,多支付几次,有时候就会出现提示“您已购买此App内购买项目。此项目将免费恢复”,特别是在沙盒测试里面支付很大几率出现,我明明选的是消耗型项目,应..._ios开发苹果支付恢复权益

spring MVC mock类单元测试(controller)_mvcmock-程序员宅基地

文章浏览阅读5.6k次。Spring从J2EE的Web端为每个关键接口提供了一个mock实现:MockHttpServletRequest几乎每个单元测试中都要使用这个类,它是J2EE Web应用程序最常用的接口HttpServletRequest的mock实现。MockHttpServletResponse此对象用于HttpServletRespons_mvcmock

【我的世界Minecraft-MC】常见及各种指令大杂烩【2022.8版】_summon生成掉落物-程序员宅基地

文章浏览阅读8.5k次,点赞7次,收藏22次。execute as @a at @s run clear @s minecraft:dark_oak_planks{display:{Name:“{“text”:“第三关[阴森古堡]”,“color”:“red”,“italic”:false}”,color:“16711680”},Enchantments:[{id:“protection”,lvl:1}],Unbreakable:1b} 1。Lore:[“{“text”:“免费”,“color”:“blue”,“italic”:false}”]..._summon生成掉落物

CentOS 7安装教程(图文详解)_centos 安装-程序员宅基地

文章浏览阅读10w+次,点赞487次,收藏2.1k次。CentOS 7安装教程: 准备: 软件:VMware Workstation 镜像文件:CentOS-7-x86_64-bin-DVD1.iso (附:教程较为详细,注释较多,故将操作的选项进行了加粗字体显示。) 1、文件--新建虚拟机--自定义 2、..._centos 安装

随便推点

Github项目分享——免费的画图工具drow,前端插件化面试_draw github画图-程序员宅基地

文章浏览阅读333次,点赞3次,收藏3次。项目介绍一款很好用的免费画图软件,支持ER图、时序图、流程图等等在项目的releases就可以下载最新版本同时支持在线编辑。_draw github画图

如何开始学习人工智能?入门的学习路径和资源是什么?_人工智能学习路径-程序员宅基地

文章浏览阅读930次。嗨,大家好!如果你对人工智能充满了好奇,并且想要入门这个领域,那么你来对地方了。本文将向你介绍如何从零基础开始学习人工智能,并逐步掌握核心概念和技能。无论你是大学生、职场新人还是对人工智能感兴趣的任何人,都可以按照以下学习路径逐步提升自己。_人工智能学习路径

Unity3D 导入资源_unity怎么导入压缩包-程序员宅基地

文章浏览阅读4.3k次,点赞2次,收藏8次。打开Unity3D的:window-asset store就会出来这样的界面:我们选择一个天空纹理,注意这里的标签只有一个,如果有多个就会显示所有标签的内容:找个比较小的免费的下载一下试试,比如这个:下载以后:点击import就会出现该窗口:然后再点击最底下的import:就导入到我们这里来了。从上面可以切换场景:..._unity怎么导入压缩包

jqgrid 服务器端验证,javascript – jqgrid服务器端错误消息/验证处理-程序员宅基地

文章浏览阅读254次。在你以前的问题的the answer的最后一部分,我试着给出你当前的问题的答案.也许我表示不够清楚.您不应该将错误信息放在标准成功响应中.您应该遵循用于服务器和客户端之间通信的HTTP协议的主要规则.根据HTTP协议实现网格中的加载数据,编辑行和与服务器的所有Ajax通信.每个HTTP响应都有响应第一行的状态代码.了解这个意义非常重要.典型的JSON数据成功请求如下HTTP/1.1 200 OK...._decode message error

白山头讲PV: 用calibre进行layout之间的比对-程序员宅基地

文章浏览阅读4k次,点赞8次,收藏29次。我们在流片之后,通常还是有机会对layout进行局部小的修改。例如metal change eco或者一些层次的局部修改。当我们修改之后,需要进行与之前gds的对比,以便确认没有因为某些..._calibre dbdiff

java exit方法_Java:如何测试调用System.exit()的方法?-程序员宅基地

文章浏览阅读694次。问题我有一些方法应该在某些输入上调用567779278。不幸的是,测试这些情况会导致JUnit终止!将方法调用放在新线程中似乎没有帮助,因为System.exit()终止了JVM,而不仅仅是当前线程。是否有任何常见的处理方式?例如,我可以将存根替换为System.exit()吗?[编辑]有问题的类实际上是一个命令行工具,我试图在JUnit中测试。也许JUnit根本不适合这份工作?建议使用互补回归测..._检查system.exit