零起点学通C++

编程入门 行业动态 更新时间:2024-10-25 04:20:37

零<a href=https://www.elefans.com/category/jswz/34/1766219.html style=起点学通C++"/>

零起点学通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章


更多推荐

零起点学通C++

本文发布于:2024-03-09 07:39:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724329.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:起点

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!