c++课程学习(未完待续)

时间:2023-03-09 15:32:26
c++课程学习(未完待续)

关于c++课程学习

按照计划,我首先阅读谭浩强c++程序设计一书的ppt,发现第一章基本上都是很基础的东西。
c++课程学习(未完待续)
同时,书中与班导师一样,推荐了使用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)
c++课程学习(未完待续)
c++课程学习(未完待续)
-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:没有参数的构造函数。
c++课程学习(未完待续)
不是default constructor
c++课程学习(未完待续)
是default constructor
c++课程学习(未完待续)
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)的形式。
c++课程学习(未完待续)
c++课程学习(未完待续)
以上两种形式一样。
图二是原初始化列表(initializer list),可初始化任何的变量,比构造函数之前被执行。
c++课程学习(未完待续)
2.类里面的赋值最好都用初始化赋值。

课时14 6-1 对象组合

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

1.对象的组合就是把现有的对象组合成一个新的对象。
2.一个类的成员变量可以使另一个类的对象。
3.fully:别人的对象是我对象的一部分。
by reference:可以调用别人的对象,但是并不是一部分。
c++课程学习(未完待续)
前三种属性是fully,最后一种属性是by reference。

课时15 6-2 继承

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

1.继承是已有的类经过改造得到一个新的类。
2.inheritance:c++课程学习(未完待续)

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