零起点学通C++--点滴

我现在的头号大敌就是晚上不睡觉!!!以至于引起白天各种问题!

下午犯困,冷水泼脸,再按压太阳穴做眼保健操3分钟


2016-09-27 周二

vc文件介绍:

.CLW文件

VC Class Wizard信息文件,存放了Class Wizard的信息。

.dsp文件

DeveloperStudio Project,项目文件,文本格式,不过不熟悉的话不要手工修改。

.dsw文件

DeveloperStudio Workspace,是工作区文件,其他特点和DSP差不多

          developstudio workspace VC++6.0打开这个文件DSW才能打开编译窗口。


API是属于windows操作系统的,是属于微软的
这些API函数是为了给程序员提供编程接口而公开的
同样的C++,VC等等也都可以调用API函数来使用
只是不同的语言的API声明的方法不同罢了
我们所知道的常用的API函数就有几百个,公开的API函数有几千个
还有很多API函数是半公开的或者非公开的,因为这些函数可以操作系统核心,比如Native API。
不用死记硬背,背也背不完
有些不常用的,长时间不用,也会忘的
可以去下个API函数大全,所谓的大全,都是些常用的API函数,有各种语言的声明方法。
或者下载MSDN集合,这个东西越来越大了,以前一张CD光盘就装完了,现在是好些倍的大小,都是编程资料文档。
用到哪些再去查哪些函数的用法。
有些API函数仅仅是用,都相当复杂。 
API的主要作用就是,微软已经集成好的一些功能,把这些功能模块化,函数化,便于程序员调用,不必再去花费精力再做一遍复杂的代码了。
 Microsoft Developer Network(微软开发者网络)

dc dc.bitblt.

通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、“hello”和常量都是放在静态存储区中。栈空间操作最快但是也很小,通常大量的对象都是放在堆空间,整个内存包括硬盘上的虚拟内存都可以被当成堆空间来使用。

String str = new String(“hello”);

上面的语句中str放在栈上,用new创建出来的字符串对象放在堆上,而“hello”这个字面量放在静态存储区。

补充:较新版本的Java中使用了一项叫“逃逸分析“的技术,可以将一些局部对象放在栈上以提升对象的操作性能。

15.22 创建位图对象。对象的成员里 给加上图片。

vc++ debug assertion failed  因为我程序里少 for(int j= 0; j<4;j++)   写成了  for(int j=; j<4;j++)   没有对J进行赋值,结果就直接奔溃了。 这都可以。

VC++6.0 调试 : 介绍调用堆栈 call stack。当故障发生时,如果程序被中断,我们基本上只可以看到最后出错的函数。

15.23 

VC++   : fatal error LNK1168: cannot open Debug/Game32.exe for writing   有泄露,程序exe在进程里其实没有关掉。结束也结束不了,就搜索MSDEV.EXT,结束后可以。

调试可以发现错误,非常重要。

然后后来遇到的问题是 exe运行没有显示。原来是图片引用的路径必须跟exe放在一起。

然后走迷宫就成了。

回去给儿子玩玩,好好玩啊哈哈


昨天部门聚会,get到:

1、每到一个公司,总得学到东西。

2、工作中严谨,到哪里都是有用的。

3、工作不分大小。

说话的艺术。大家都觉得吕工的思维太快了。

而这几天我感觉家庭和工作的关系没有处理好。不能尽快的从家庭中抽身出来快速的投入工作,开动在工作中的脑筋。但是家庭里,好像教育孩子这时做什么之类的,因为有孩子的互动,我感觉融入的很快。

跟我在一起的同事,刚开始见我时,觉得我特别干练,很成熟的。 结果共事后觉得我想小孩。。。 这可不是一个好现象。 


2016-09-23 周五

昨天被吕工的博学聪慧又打击到了。然后回家的路上一路心情很郁闷。后来在家陪儿子的间隙赶紧看看专业东西,心里立马好受了。说明当你胡思乱想的时候,马上立刻去做引起你焦虑的源头的有意义的事情,能让人心情变好,多了知识人又变充实!双赢啊!

感激马工分享的这个视频,帮助超级大。加油!

链表的使用:创建 显示 插入 删除 统计等功能,一个功能一个函数。

cin.get  输入两次,第一次接收程序输出里的 回车键。第二次cin.get 会提示 按回车返回程序。可以暂停。防止屏幕一闪而过。cin.get只读入一个。

cin.get cin.get  输入 1 2 ,就会第一个1 第二个2.

cin 遇到回车和空格就表示结束。

num = atoi(str.c_str());   这个解决了我之前一直想着的怎么输入整型的问题。

atoi 函数把字符串的数字转为数字型数值。

c_str()是string类的成员函数,是获取对象字符串的首地址。

eof()可以判断一个数据流格式的文件指针是不是已经到末尾了。

15.1 走迷宫。

afxwin.h MFC的窗口类。

MFC也有资源文件。资源文件是保存声音和图片的。

资源文件里还要关联头文件。这个在QT里是没有的。 类向导,classWizard, 建立文件存放类的信息。

Microsoft foundation classes。

设置项目--创建派生类--应用程序对象创建--初始化函数--

基于MFC框架生成的应用程序必须有且仅有一个从CWinApp派生的类的对象。

句柄是指针的指针。 虚拟内存,内存有限,引进了指针的指针。

15.10



2016-09-13 周三

其实,编程,思路和理论知道都很重要。

建立链表 建立头结点  

显示链表 在C++里,NULL就等于0.指针初始化时都给指到NULL是最好的。 链表尾都是要置为NULL的。

删除: 删除头结点 删除非头结点 

链表的插入  查空指针,然后把当前指针的next指到插入的对象。

链表的尾插法 :链表的结尾处插入

链表的前插法


2016-09-13  周二

       15章 输入字符造成死循环?

链表创建 插入 删除 

2016-09-12 周一

    链表解决了到底给数组、结构体分配多大空间的问题。 容器 放了东西,还放下一个东西的放置地址。

  发现只要是静态 就是编译的时候已经配置好值或者指好对象了的。class也可以是链表,其实跟结构体一样。就是要就一个Public之类的属性。

  c语言里会使用malloc和free去操作内存空间的动态分配。 C++里使用new和delete来动态分配。

 15.5.1章要不要练习一下。


2016-09-05 周一

14章  字符串输入 遇到空格会怎么样?自动录入结束。

        gets(a) 可以解决空格的问题。

       如果数组是10,输入20个,控制台会奔溃。

       cin.get(a,12);第三个参数默认不设置。

      14.34  strcat  string catenate的缩写。连接。使用catenate时,前一个字符数组不定义大小,连接后控制台会奔溃。

对象数组,就是一个类给定义一个数组对象。

对象数组初始化每个成员变量

数组对象构造函数执行顺序 是从上而下,而析构函数刚好相反。

栈的内存一般都是有限的。堆中对象。堆的内存一般都很大。

14,24  数组指针 

class A  

  A *one = new A[100];   one[i].成员。

防止内存泄露   数组删除   delete[] one,[]表示删除的是数组。  如果直接delete one,只会 删除one[0],其余的都删不了了。造成内存泄露。

可控可追踪 使用 指针指向 对象数组。

       strupr string uppercase (lowercase-uppercase) 字符串小写转大写

strlwr sting lowercase ( uppercase-lowercase)字符串里大写转小写

使用数组,进行杨辉三角形的实现。

运算符的重载

下次15章。


2016-09-02 周五

13章主要的基本明白了。虚析构哈哈,构造是没有虚的。

14章 C++规定 在一个程序里必须只有一个原本。不能有副本,按地址传递。

看到14章22节了。


2016-09-01 周四

静态联编 编译时和运行时的关系一样。

运行时的动态联编 晚期联编 动态束定 使用虚函数就可以实现。必须是指针才能实现动态联编。

CLASS A

A() 创建临时对象   new A创建匿名对象   A a   创建对象     A *a 创建对象指针

基类的对象

基类的指针

基类的引用


2016-08-31 周三

 继承和基类指针指向派生类,虚函数 自动执行对象对应的成员函数。

下一次13.6


2016-08-30 周二

复习了一次之前写的。


2016-08-29 周一

类 是一个名称,相当于int这样的类型。没有办法对类进行赋值。没有办法对类的成员进行直接赋值。  只能 类定义出一个对象,然后对象的成员可以赋值。

定义和声明分开 与否可以引出内联函数

内联函数 inline 带有宏定义的性质。声明的时候只是声明。

好处就是 如果调用的频繁,就可以减少函数调用跳转,缺点是如果函数体过大就会代码膨胀。

等程序完成后,再对部分函数声明为内联inline函数。

inline函数往往是编译时确定的。虚函数时运行时确定的。


类的的成员应用:类名::成员;对象成员应用 : 对象名.成员


inline函数里尽量不要声明static变量:因为如果放到.h里的话,就会很多地方声明

inline函数不要想去获取它的地址,声明时它是不存在的,获取不了地址。

内联Inline函数有两种表现形式:

1、在类中 成员函数直接声明 直接定义 就是inline

2、函数前面加inline 标识Inline


头文件 .h 源文件  .cpp

定义一个成员函数为const函数(int get(int i) const),表示在这个函数里不能有修改别的成员变量值的行为。如果定义一个变量为const就表示这个变量不能被修改。

在编程的时候,对于你已经确定这个函数不要去修改变量的,就在声明成员函数时,应该多使用const,这样编译器就会提示错误,从而帮助你查错。

const 听起来就跟宏定义一样,有宏定义的特点,声明的时候不给分配存储空间,第一次调用的时候给分配。再次调用不在此分配空间。宏是调用多少次分配多上次空间。这个是针对编译还是针对运行还搞不清楚。


局部变量放在堆区,全局变量放在栈区。

说到const肯定想到static,考虑的就是申明、内存、调用、有效范围、值这几个方面

static有两种声明方式:

1、static声明在函数里面 就是函数里可以调用静态变量。 存储在全局变量的内存里。数值是上一次数值的基础上再使用,不会函数再次调用再次初始化。

2、static声明在源文件里。就是当前源文件可以调用的全局静态变量。存储在全局变量里,数值跟全局变量使用一样。

这个变量如果被别的源文件引用会报错。而且别的源文件还可以定义相同名字的变量而不产生冲突。


构造函数  可以在创建类的对象的时候对对象进行初始化。名称和类名一样

构造函数没有返回值,可以是内联函数,可以不是内联函数。

一个类可以有多个构造函数,这样可以 构造多个对象。


析构函数 销毁对象占用的内存空间。一个类只能有一个不带参数,没有返回值的析构函数。

感觉第7章可以不用看。

下回看第13章的虚函数吧。


2016-8-23 

第5章 

赋值运算符 

数学运算符

表达式的优先级 可以使用括号。

关系运算符   ==   !=  <   >等。

if语句:if   if else   if elseif   if语句的嵌套  if()fi()    带括号的嵌套语句(else跟最近的if结合的。)大括号括起来,这样就else可以跟想要的if配对。

逻辑运算符 与 或 非 ; 优先级:不知道哪个优先级的话,就括号括起来。自己写程序,自己可以随意控制。

判断真假 if()

三目运算符,三元运算符 a?b:c 条件运算符。允许对不同类别的变量同时操作。float int三目运算会把他们精度跟最高精整合在一起。

复杂的IF嵌套。就是if 一层再套一层。

第6章

面向对象思想的程序 C是面向过程的语言。

面向对象程序语言的特征: 抽象  封装 继承 多态

私有成员不能被对象直接访问。只能通过共有成员函数接口来访问这个私有成员。 私有成员调用这么麻烦,为什么还要使用私有成员呢? 数据的赋值和读取分开操作。

很难理解为什么会有公有成员和私有成员一说:

1、如果你有私有成员。然后封装了公有的接口给别人,别人只能看到这个公有接口运行的结果,不知道里面发生了什么。 为了不让别人对我这部分东西进行修改。

2、比如我有一个私有变量,这样的话,对象是访问不了的,不能读写。我如果想别人只能读,不能写,就可以只写一个读的接口成员,不写写的接口成员,这样这个变量就修改不了了。

3、私有成员是继承不了的。但是类在应用的时候都是对象去用它,如果是用不了,不是所有人都是用不了了么 ?

QT里的私有成员 和C++里的私有成员好像不一样?

下回看6.10 内联函数



2016-08-19

第2章5节  名字空间解决重名问题。 namespace  a,引用的时候就像std一样,a::。

当使用using namespace 释放变量,如果重名的话,MAIN函数里又没有同名的定义,就会报错。如果main里有同名的,就会输出main里的值。



第4章8节,为什么要用补码。计算机不能执行减法。

所以2-1 等效为 2+(-1) 

-1 在计算机里 最高是符号位     1000 0001  这是计算机里的保存值。

负数和正数相加,负数会做两步转换,然后和正数相加,得到正确的数。

第一步:符号位之外的全部翻转  ; 

第二步:将最后一位+1;

然后二进制相加。


第4章12  枚举类型  可以使用文字代表数字值,使程序更为简单易懂,可读性增强。还可以定义枚举变量。进行判断 赋值等。

下回看第5章


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第1篇初级篇 第1章 初识C++ 1.1 c++简介 1.2 C++与C的区别 1.3 学习c++之前需要先学C吗 1.4 c++与其他语言的区别 1.5 c++的版本以及安装问题 第2章 做一个最简短的C4-+程序 2.1 简单的屏幕输出小程序 2.2 输出语句的使用 2.3 std::介绍 2.4 iostream与iostream.h的区别 2.5 重名问题 2.6 注释 2.7 总结 第3章 初步了解函数 3.1 一个简单的函数 3.2 函数的传参 3.3 函数的返回值、参数与变量 3.4.函数的声明与定义 3.5 局部变量 3.6 全局变量 3.7 总结 第4章 C4-+数据类型 4.1 变量的定义 4.2 将变量及数据存储在内存中 4.3 布尔型变量 4.4 字符型变量 4.5 wchart双字符型变量 4.6 整型概述 4.7 整型变量的定义 4.8 浮点型变量 4.9 常量 4.10枚举型常量 第5章 if语句与运算符 5.1 语句的定义 5.2 块的定义 5.3 表达式的定义 5.4 运算符的定义 5.4.1 赋值运算符的定义 5.4.2 数学运算符的定义 5.4.3 赋值运算符与数学运算符的联合 5.5 自加与自减 5.5.1 前置 5.5.2 后置 5.6 表达式的优先级 5.7 关系运算符 5.8 if语句 5.8.1 else语句 5.8.2 elseif语句 5.8.3 if语句的嵌套 5.9 逻辑运算符及其使用 5.9.1 逻辑“与” 5.9.2 逻辑“或” 5.9.3 逻辑“非” 5.9.4 逻辑运算符的优先级 5.9.5 运算式的真假关系 5.1 0三目运算符 5.1 0.1 三目运算符的优先问题 5.1 0.2 三目运算符的使用问题 5.1 0.3 三目运算符的型别问题 5.1 0.4 三目运算符在字符型变量中的应用 5.1 1复杂嵌套的if语句 5.1 2总结 第6章 面向对象 6.1 面向对象程序语言的主要特征 6.2 类、对象和成员 6.3 类、对象和成员的使用方法及区别 6.3.1 声明一个类 6.3.2 命名习惯 6.3.3 定义一个对象 6.3.4 类与对象的区别 6.3.5 对象与成员的关系 6.3.6 不要给类赋值 6.3.7 对象只能调用类中存在的方法 6.4 公有 6.5 私有 6.6 成员函数的声明和定义 6.7 内联函数 6.7.1 普通内联函数 6.7.2 内联成员函数 6.8 头文件与源文件 6.9 const成员函数 6.10构造函数 6.11默认构造函数 6.12析构函数 6.13析构对象数组 6.14总结 第7章 循环语句 7.1 循环语句的前身——goto语句 7.2 慎用goto语句 7.3 while语句 7.3.1 带运算符的while语句 7.3.2 以字符为条件的while语句 7.3.3 限定while循环的次数 7.3.4 continue语句 7.3.5 break语句 7.3.6 永不休止的while循环 7.4. do……while循环 7.5 for循环 7.5.1 灵活的for循环 7.5.2 条件为空的for循环 7.5.3 执行为空的for循环 7.5.4 嵌套的for循环 7.6 switch语句 7.6.1 switch语句常见错误 7.6.2 switch的菜单功能 7.7 总结 第8章 指针 8.1 什么是地址 8.2 用指针来保存地址 8.2.1 空指针 8.2.2 指针与变量类型 8.2.3 用指针来访问值 8.2.4 指针地址、指针保存的地址和 该地址的值 8.2.5 指针对数值的操作 8.2.6 更换指针保存的地址 8.3 为什么使用指针 8.3.1 栈和堆 8.3.2 用指针创建堆中空间 8.3.3 用指针删除堆中空间 8.4 动态内存 8.4.1 内存泄漏 8.4.2 在堆中创建对象 8.4.3 在堆中删除对象 8.4.4 访问堆中的数据成员 8.4..5 在构造函数中开辟内存空间 8.4.6 对象在栈与堆中的不同 8.5 this指针 8.6 指针的常见错误 8.7 指针运算 8.7.1 指针的加减运算 8.7.2 指针的赋值运算 8.7 _3指针的相减运算 8.7.4 指针的比较运算 8.8 指针 8.8.1 常量指针 8.8.2 指向常量的指针 8.8.3 指向常量的常指针 8.9 总结 第9章 引用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值