关于c++课程学习

按照计划,我首先阅读谭浩强c++程序设计一书的ppt,发现第一章基本上都是很基础的东西。

同时,书中与班导师一样,推荐了使用visual c++。
而师爷的教程里面推荐使用的是eclipse,并且使用的时候要新建一个project。
但是个人其实更喜欢使用devc++,因为之前编写c程序的时候,汉森大神推荐了使用devc++,使用了一个学期以后,认为devc++比较简明,使用起来很方便。

课时1 第一个c++程序

**第一节主要讲了一些简单的c++程序,让我对c++有了初步的认识。**

*c++笔记

1.cout:standard output 标准输出。
2.<<:左移,但是<<左面是out的时候,意思是将<<后面的往out里面输出。
3.<<""<<""<<endl:连续插入;endl:end of line。
4.cin:输入。
5.cin>>变量的名字

*eclipse使用技巧

1.更换变量名的时候可以双击变量名,再右键,点refactor,更改变量名,这样所有的变量名就都会改变。
2.文件名字有“”的意思是没有保存,保存以后,“”消失。
3.一个程序可能同时运行多次,要在绿色按钮处单个处理。

课时2 什么是对象

**第二节主要讲了面向程序对象中什么是对象的问题,并且与c语言(面向过程)做出了区别。**

c语言主要是面向过程,更多的是对于过程的描述,有了解题的思路以后,一步一步地将过程描述出来。主要是函数,从main函数出发到很多的函数,最终得到最终值。
而c++主要是面向对象,将对象赋予操作,从而达到解题的目的。
所有的东西都是对象(object),可变也可不变。

课时3 面向对象基本原理

**第三节主要讲了c++(object oriented programming)的一些原理**

1.对象之间存在交互,发送和接收消息。(objects send and recieve messages(object do things))
-messages are composed by senders;messages are interpreted by receivers;messages are implemented by methods.(传送命令的人发出命令,但是做不做由接收者决定;而是否执行是通过不同方法而实现的。)
-messages may cause receivers to change state;may return results.(得到信息的方法是通过返回值(消息的直接反馈)或者看状态是否改变。)
2.类(class)(类型)中可能会有很多对象。
-对象是实体,而类是概念。
-类定义了对象有一定的特性。
3.oop的特征
-everything is an object.
-a program is a bunch of objects telling each other what to do(而不是how to do) by sending messages.
-each object has its own memory(内存) made up of other objects.
-every object has a type.(任何东西都是由类别定义出来的,先有类别,才有对象。)
-all objects of a particular type can recieve the same messages.(所有类别的东西都有能接受同样的信息;能接受特定一样信息的东西都可以算是同一类别)
4.an object has an interface.(任何对象都有它的接口(才能与外界联系))
-the interface is the way it receives messages.
-it is defined the class the object belong to.(具有相同接口的事物属于同一类)
接口的作用:交流;保护(接口内部的事物是隐藏的)。

课时4 自动售票机例子

**第四节主要通过自动售票机的例子让我们对c++有了进一步的认识**

eclipse

1.一般创建project的名称都应该是小写,在eclipse中大写代表“惊慌”。
2.而class的命名一般都喜欢用每一个单词的首字母大写。
3.name space 一般都是比较复杂的程序才使用,如果不勾class里面的namespace,那么一般这个类会分到dfine namespace中。
4.finish以后会生成两个文件(.h文件和.cpp文件)
5.在头文件里面声明(自动售票机的public(动作)和private(对象));在.cpp里面定义在.h里面所声明的那些东西的实体
6.::→是解析符【四个点表示一个范围】
-::(指后面的函数是属于前面的某一类)
-::
-viod S::f()
{
::f();//woule be recursive otherwise.(全局函数)
::a++;//select the global a(全局)
::a--;//the a at class scope
}

课时5 3-1 头文件

**第五节主要讲了头文件的重要事项和类与头文件的使用事项**

1.类的定义
-in c++,separated .h and .cpp files are used to define one class.(一个类通常会展开头文件和.cpp文件)
-class declaration and prototypes in that class are in the header file(.h).(类的声明和函数原型都放在头文件中)
-all the bodies of these functions are in the source file (.cpp).
2.一个函数定义在头文件里面,在所有要用到这个函数的地方include这个头文件。
3..h和.cpp应该成对出现。
4.#include是编译预处理指令。
5.include的作用是吧要include的文件写在需要include的地方。
6.include有三种形式
-#include"xx.h":在写include的当前文件去寻找.h文件
-#include<xx.h>:在系统目录里面去寻找。
-#include和第二种形式一样(c++里面的特殊形式)。
7.标准头文件一定要有(为了防止在一个.cpp里面include同一个.h多次,而出现多次.h的声明)
`#ifndef HEADER_GLAG

define HEADER_GLAG

//Type declaration here...`
8.tips for header
-每一个类的声明都要放在头文件里面(一个头文件里面要求放一个类的声明)
-对应的源代码文件用相同的前缀。

课时6 3-2 时钟的例子

**第六节主要以时钟为例介绍了c++的使用**

1.先看由什么对象组成的(这个里面是有小时和分钟两个对象)。
2.abstract(抽象):看待一个事情的时候有意的看不到什么东西(不考虑更内部的事情
3.小时和分钟相似之处:都是+1;不同之处:(终点不一样)
4.分为两个类
-number display:小时或者是分钟(接受动作)
-clock display:小时和分钟的组合(clock display里面用到了number display)


-limit:什么时候turn over。
-value:现在的值是多少。
-increase:判断返回值是true还是false(到limit返回true)

最终代码可以写出:
class ClockDisplay{ NumberDisplay hours; NumberDisplay minutes; Constructor and methords omitted. } class NumberDisplay{ int limit; int value; Constructor and methords omitted. }
需要五个源程序文件:每个类有两个和一个main函数(合理)。

课时7 3-3 成员变量

**第七节主要介绍了成员变量和本地变量的区别**

1.变量有三种:local variable(本地变量),成员变量(fields),函数参数(parameters)。
1.本地变量:在一个函数的内部定义的变量(只在函数运行时候有定义)。
2.本地变量和某个成员变量(相同时,就近原则。(按照最近的定义来,本地变量起作用,成员变量屏蔽)
3.-fields:定义在类的所有函数和构造函数之外的变量,永远存在。
-local variable:和函数有关,只能在函数中使用。
-parameters和local variable一样。

课时8 4-1 成员变量的秘密

**第八节主要讲了成员变量的调用和本地变量的区别,介绍了this的含义**

理解为主

1.point a;a.print()可以调函数,被调函数和变量之间是有联系的,函授部知道对a做事情,这个变量之间的联系叫做this。(this是一个指针,类型就是这个函数所处的类的对象的指针)
Point a;
a.print();
→(can be regarded as)
Point::print(&a);

课时9 4-2 构造与析构

**第九节主要讲了构造函数和析构函数**

1.constructor(构造函数):保证对象创建出来就能够被初始化。
class X{ int i; public: X(); };
构造函数和类的名字是相同的;没有任何的返回类型;构造函数会在对象创建的时候自动的建立。
2.destructor(析构函数):当对象被消灭的时候调用。
class Y{ public: ~Y(); };
~:tilde.
3.没有构造就不会析构。

课时10 4-3 对象初始化

**第十节主要讲了空间分配的原则和default constructor**

1.空间在进入大括号的时候就已经分配,但构造函数是在运行到对象出现的那一行才分配空间。
2.default constructor:没有参数的构造函数。

不是default constructor

是default constructor

error

课时11 5-1 new & delete

**第十一节主要讲了如何动态的制造对象(动态的内存分配)**

1.-new(创建对象)
-new int(类型)
-new Stash(分配完空间去调用构造函数,结果是得到一个地址)
-new int[10]
-delete(回收对象,析构函数先被调用再被收回(delete))
-delete p;
-delete[] p;new带[]delete也带[]
2.int *psome=new int[10];
delete[]psome;
delete的[]是告诉系统有多个new的内存需要被释放,要调用多个析构函数。没有[]的话只能调用第一个析构函数。
3.tips for new and delete:
-不要用delete释放不是用new分配出来的空间。
-不要用delete两次释放同一块空间。
-new有[],delete也要有[].
-it's safe to applu delete to the null pointer(nothing happens).

课时12 5-2 访问限制

**第十二节主要讲了关于访问属性的问题**

1.private:只能被自己(这个类的成员函数)访问的成员(函数或者变量);public:可以被别人访问的成员;protect:只有子类能访问的数据。
2.private只有在编译的时候受限制。运行的时候不受限制。
3.可以声明别的函数或者类或者类里面的函数是朋友(friend),朋友就可以访问private。

课时13 5-3 初始化列表

**第十三节主要讲了初始化赋值**

1.对值的初始化除了可以在函数里面赋值,也可以用A():p(0)的形式。


以上两种形式一样。
图二是原初始化列表(initializer list),可初始化任何的变量,比构造函数之前被执行。

2.类里面的赋值最好都用初始化赋值。

课时14 6-1 对象组合

**第十四节主要讲了对象组合的两种类型**

1.对象的组合就是把现有的对象组合成一个新的对象。
2.一个类的成员变量可以使另一个类的对象。
3.fully:别人的对象是我对象的一部分。
by reference:可以调用别人的对象,但是并不是一部分。

前三种属性是fully,最后一种属性是by reference。

课时15 6-2 继承

**第十五节主要讲了继承的规则**

1.继承是已有的类经过改造得到一个新的类。
2.inheritance:

student要比person具有更多的数据。
3.新的类一半在上面,老的类一般在下面。
4.表达继承的方法:class A{...};class B:public A{...};表示B类继承了A类(B是A的子类,A是B的父类)。
5.父类私有的东西在子类里面是存在的,但是不能碰。而父类protected的东西只有子类可以碰,而main函数不能碰。
6.所有的数据都是private,留protected的接口给子类,还有public是所有人都可以访问的。

转载于:https://www.cnblogs.com/neveslalala/p/5177843.html

c++课程学习(未完待续)相关推荐

  1. 【第三方框架】Glid4.4 完全学习(未完待续)

    一.添加方法: 导入Glide4.4的依赖: implementation 'com.github.bumptech.glide:glide:4.4.0'annotationProcessor 'co ...

  2. 深度学习(三十九)LSTM、GRU网络入门学习-未完待续

    LSTM入门学习 原文地址:http://blog.csdn.net/hjimce/article/details/51234311 作者:hjimce 一.相关理论 本篇博文主要讲解LSTM.GRU ...

  3. 深度学习(八)RBM受限波尔兹曼机学习-未完待续

    RBM受限波尔兹曼机学习 原文地址: 作者:hjimce [python] view plain copy #coding=utf-8 import timeit try: import PIL.Im ...

  4. 深度学习(八)caffe源码学习-未完待续

    本文主要详细讲解caffe的直接调用方法. 一.训练相关 #!/usr/bin/env sh TOOLS=../cafferead/build/tools $TOOLS/caffe train --s ...

  5. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

    1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...

  6. Windows x64内核学习笔记(五)—— KPTI(未完待续)

    Windows x64内核学习笔记(五)-- KPTI(未完待续) KPTI 实验一:构造IDT后门并读取Cr3 参考资料 KPTI 描述:KPTI(Kernel page-table isolati ...

  7. 二叉树学习笔记(未完待续)

    摘要 二叉树学习笔记(未完待续). 博客 IT老兵驿站. 前言 昨天(2019-11-07)复习红黑树,发现红黑树和二叉树密不可分,所以这里再复习一下二叉树. 在大学的时候,这块我很认真地学习了一遍. ...

  8. 学习前端的实用网站——未完待续

    学习前端的实用网站--未完待续 一.学习类网站 1.视频教程 2.技术分享 3.大牛博客 4.参考手册 二.功能类网站 1.颜色 2.图标 3.字体 4.素材 三.辅助类网站 一.学习类网站 1.视频 ...

  9. 多标签学习之讲座版 (内部讨论, 未完待续)

    摘要: 多标签学习是一种常见的, 而并非小众的机器学习问题. 本贴为专题讲座准备. 1. 基本数据模型 定义1. 多标签数据为一个二元组: S=(X,Y),(1)S = (\mathbf{X}, \m ...

  10. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)

    目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...

最新文章

  1. Vmware安装提示在关闭以下进程 之前,无法进行安装的解决办法
  2. FPGA之道(10)布线资源与接口资源
  3. 关于装箱拆箱导致的异常案例
  4. Linux怎么查看设置系统语言包
  5. map的专项知识点总结
  6. Java 文件上传组件 Apache Commons FileUpload 应用指南(二)——FileUpload如何工作?
  7. html5进度条插件 传递参数,Html5进度条插件(自写)
  8. 【Python学习】 - - 链表推导式[ 2*x for x in X ]、匿名函数、并行迭代
  9. 如何衡量研发效能?阿里资深技术专家提出了5组指标
  10. linux分区 挂盘,linux分区,挂盘,LVM
  11. 你认识的有钱人,是怎么起家的?是做什么生意的?
  12. Razor语法(四)
  13. 一步步学习微软InfoPath2010和SP2010--第三章节--表单设计基础:处理InfoPath布局、控件和视图(2)--添加一个布局和表格
  14. Java大数开根号板子
  15. 摄像头和机械臂的手眼标定
  16. 双指缩放canvas图片_JS实现移动端双指缩放和旋转方法
  17. 超实用的 Vue 组件通信方式大汇总(8种)
  18. 各个数据库的空间函数
  19. 计算机应用基础网络统考操作,全国高校网络教育统考《计算机应用基础》操作题...
  20. 2021小微企业补贴条件

热门文章

  1. rtmp httpflv 服务优化以及安全性分布式探讨
  2. wampserver橙色如何变成绿色_绿色配什么颜色好看 家居绿色配色小技巧-装修攻略...
  3. 【Elasticsearch】Elasticsearch 的异步搜索原理解析 _async_search
  4. 【Flink】Flink 单个任务 多个流的消费同一个topic的时候其中一个流卡死 不消费
  5. 【Clickhouse】Clickhouse 运算符 操作符 算术,比较,取整,逻辑,哈希,条件 字符串函数
  6. 【Docker】Mac下Docker启动Kubernetes
  7. 【Docer】Docer安装MySQL并且远程登录
  8. java -cp命令使用
  9. 【java】java jps 命令
  10. 小白程序员最容易踩的“坑”,你踩过几个?