关于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是所有人都可以访问的。

c++课程学习(未完待续)的更多相关文章

  1. 浅析Oracle PL/SQL 学习--未完待续

    这是一篇关于Oracle Pl/SQL数据库编程的课程学习分享... 首先说明几点: 学习这门课程之前,已经学过并且掌握一些基础的SQL语句.数据库结构分析.ER图设计等知识: 这里也只是较为大概地将 ...

  2. springcloud-netflix组件学习-未完待续!!!

    SpringCloud学习 Spring Cloud是什么鬼? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现 ...

  3. 【tomcat】sessionId学习(未完待续)

    这里主要研究tomcat中session的管理方式以及sessionId的原理,下文将研究sessionid存到redis中以及基于redis实现session共享. 平时也就是了解session是基 ...

  4. 可持久化Treap(fhq Treap,非旋转式Treap)学习(未完待续)

    简介:     Treap,一种表现优异的BST 优势:     其较于AVL.红黑树实现简单,浅显易懂     较于Splay常数小,通常用于树套BST表现远远优于Splay     或许有人想说S ...

  5. jmeter 工具学习 未完待续

    about Apache JMeter是Apache组织的开源项目,是 一个纯Java桌面应用,用于压力测试和性能测试,它最初被设计用于 web应用测试,后来逐渐的扩展到其他领域 jmeter可以用于 ...

  6. Go web编程学习笔记——未完待续

    1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...

  7. Java开发中的23+2种设计模式学习个人笔记(未完待续)

    注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...

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

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

  9. 堆学习笔记(未完待续)(洛谷p1090合并果子)

    上次讲了堆,别人都说极其简单,我却没学过,今天又听dalao们讲图论,最短路又用堆优化,问懂了没,底下全说懂了,我???,感觉全世界都会了堆,就我不会,于是我决定补一补: ——————来自百度百科 所 ...

  10. 一篇文章让Oracle程序猿学会MySql【未完待续】

    一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...

随机推荐

  1. Hive学习之Locking

    众所周知,数据库必须要能够支持并发.无论在任何时候,允许同一时刻,多个用户能够同时读取或写入.没有必要给用户提供API显示的获取锁,所以所有的锁都是隐式获取的. 在Hive中有两种类型的锁: 共享锁S ...

  2. dev中ASPxListBox单选和多选的设置

    只需要设置SelectionMode,为Multiple时是单选,CheckColumn时是多选

  3. springcloud-断路器hystrix

    Netflix的创造了一个调用的库 Hystrix 实现了断路器.在微服务架构中,通常有多层服务调用. 底层服务出现故障可能导致用户级联故障.当调用特定服务达到一定阈值时(Hystrix中的默认值为5 ...

  4. webAPP 图片上传

    关于webAPP 手机上传 用的vue.js 首先是js代码 调用手机app 的 相册或者自己拍照 upload: function(index) { //上传 this.index = index ...

  5. 线程7--GCD的基本使用

    子线程执行延时操作,执行完成后返回主线程更新界面 dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DE ...

  6. 有序的数据结构中:内存操作红黑树快,磁盘操作b+树快

    红黑树常用于存储内存中的有序数据,增删很快,b+树常用于文件系统和数据库索引,因为b树的子节点大于红黑树,红黑树只能有2个子节点,b树子节点大于2,子节点树多这一特点保证了存储相同大小的数据,树的高度 ...

  7. [Clojure] 包管理器leiningen配置国内镜像仓库

    clojure用到的包管理站主要有两个,一个是解决java类库依赖的maven,一个是clojar 很多人都知道maven有阿里云提供的镜像站,可是clojar呢?幸运的是中科大为我们提供了cloja ...

  8. MySQL中文编码设置为utf-8

    MySQL中文编码设置为utf-8 原文地址:http://blog.csdn.net/wangnan537/article/details/47819167 1. 查看MySQL数据库的默认编码有如 ...

  9. 通过UA判断,对滚动条样式进行不同的操作

    浏览器滚动条的默认样式比较丑,有些情况下,又不能直接overflow:hidden掉. 本文阐述如何通过 document.styleSheets[0].insertRule 简单的实现pc端和移动端 ...

  10. js设置光标插入文字和HTML

    原文链接:js设置光标插入文字和HTML 在一个textarea的某个光标位置插入文字或者在某个编辑器中插入图片html内容,我最近经常和这些打交道,但总是一团模糊,今天整理一下关于如何插入文字,设置 ...