c++课程学习(未完待续)
关于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 otherwhat 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++课程学习(未完待续)的更多相关文章
- 浅析Oracle PL/SQL 学习--未完待续
这是一篇关于Oracle Pl/SQL数据库编程的课程学习分享... 首先说明几点: 学习这门课程之前,已经学过并且掌握一些基础的SQL语句.数据库结构分析.ER图设计等知识: 这里也只是较为大概地将 ...
- springcloud-netflix组件学习-未完待续!!!
SpringCloud学习 Spring Cloud是什么鬼? Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现 ...
- 【tomcat】sessionId学习(未完待续)
这里主要研究tomcat中session的管理方式以及sessionId的原理,下文将研究sessionid存到redis中以及基于redis实现session共享. 平时也就是了解session是基 ...
- 可持久化Treap(fhq Treap,非旋转式Treap)学习(未完待续)
简介: Treap,一种表现优异的BST 优势: 其较于AVL.红黑树实现简单,浅显易懂 较于Splay常数小,通常用于树套BST表现远远优于Splay 或许有人想说S ...
- jmeter 工具学习 未完待续
about Apache JMeter是Apache组织的开源项目,是 一个纯Java桌面应用,用于压力测试和性能测试,它最初被设计用于 web应用测试,后来逐渐的扩展到其他领域 jmeter可以用于 ...
- Go web编程学习笔记——未完待续
1. 1).GOPATH设置 先设置自己的GOPATH,可以在本机中运行$PATH进行查看: userdeMacBook-Pro:~ user$ $GOPATH -bash: /Users/user/ ...
- Java开发中的23+2种设计模式学习个人笔记(未完待续)
注:个人笔记 一.设计模式分三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模 ...
- CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)
目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...
- 堆学习笔记(未完待续)(洛谷p1090合并果子)
上次讲了堆,别人都说极其简单,我却没学过,今天又听dalao们讲图论,最短路又用堆优化,问懂了没,底下全说懂了,我???,感觉全世界都会了堆,就我不会,于是我决定补一补: ——————来自百度百科 所 ...
- 一篇文章让Oracle程序猿学会MySql【未完待续】
一篇文章让Oracle DB学会MySql[未完待续] 随笔前言: 本篇文章是针对已经能够熟练使用Oracle数据库的DB所写的快速学会MySql,为什么敢这么说,是因为本人认为Oracle在功能性方 ...
随机推荐
- unity编辑器之自动提示订外卖
1.问题来源 事情一忙,忘记叫外卖是常有的事,到了12点同事们都吃上了饭,你却只能挨饿,估计很多程序员都有这种经历吧,这里我们来做一个unity编辑器准点提示订外卖服务的功能. 2. ...
- Linux errno详解
1. 错误码 / errno Linux中系统调用的错误都存储于 errno中,errno由操作系统维护,存储就近发生的错误,即下一次的错误码会覆盖掉上一次的错误. PS: 只有当系统调用或者调用li ...
- 谷歌旗下专业图片编辑Snapseed获重大更新
谷歌旗下的图片编辑应用Snapseed今天获得重大更新,承诺为用户的手机或者平板带来“精确和卓越控制的专业图片编辑软件”.Android和iOS版本同时获得更新,新增包括镜头模糊.色条对比.更加灵活的 ...
- 《码出高效 Java开发手册》第一章计算机基础(未整理)
码云地址: https://gitee.com/forxiaoming/JavaBaseCode/tree/master/EasyCoding
- Spring中的Bean的配置形式
Spring中Bean的配置形式有两种,基于XML文件的方式和基于注解的方式. 1.基于XML文件的方式配置Bean <?xml version="1.0" encoding ...
- O(∩_∩)O~~
1.在一切ac的路上,所以的难题都是纸老虎. 2.加油吧,少年.
- UNIX 高手的另外 10 个习惯
让我们面对现实吧:坏习惯很难改变.但是您已经熟悉的习惯可能更难克服.有时,重新审视某些事情可能让您遇到“啊哈,我没想到它能做到这一点!”的时刻.在 Michael Stutz 的优秀文章“UNIX 高 ...
- zookeeper 典型应用
一.发布/订阅 配置文件的集中管理. 问题:当分布式系统变多后,每个系统保存相应的配置文件,会造成同个文件有多份,修改起来非常麻烦. 解决方法:使用zk的发布/订阅功能,配合Watcher机制,在应用 ...
- 浅谈脚本化css(三)之方块运动函数
我们可以写一个让小方块运动的函数: div#demo { width: 100px; ; position: absolute; ; ; } var div = document.getElement ...
- elastic job will never fire
1. 描述 2018-08-20 18:11:01.912 [Thread-8] INFO org.quartz.impl.StdSchedulerFactory - Using default i ...