从今天开始学习C++,将学习中遇到的问题,以及解决方案记录在这个博客里。

函数

1.C++函数声明(原型) 函数原型跟函数的定义在返回值类型,函数名,参数上必须完全一致。

2.程序的内存区域:全局数据区,堆区,栈区,堆区中存指针需要手动释放,栈区内存的数据会自动释放。

静态局部变量只在定义它的函数中可见(即使定义的名称相同也不是一个值).

3.重载函数至少在参数个数,类型,顺序上有所不同。可以在函数原型中重载。

4.默认参数 void Delay(int loops=1000);调用:Delay();

程序结构

C++的编译器和连接器把构成一个程序的若干源文件有机的联络在一起,最终产生可执行文件。

1.所有函数声明一般都放在源文件开始的地方,默认的函数声明或者定义都是extern;

2.带extern的变量说明是变量的声明,不是变量的定义.局部变量不可以用extern声明.

3.静态全局变量以及静态函数对组成改程序的其他源文件是无效的.-->静态就是让变量和函数在声明的区域内变为私有。

编译预处理

1.#include 包含指令

#include<文件名> 去include子目录下查找-->标准方式

#include"文件名" 先从文件当前目录找 如果没有就按照标准方式

指针

用来操纵地址的特殊类型变量就是指针。

int *a=&b;  整形数*a-->value;整形指针 a-->&b;

指针使用前必须进行初始化.

堆内存分配

C -->malloc free

C++ -->new delete

引用

引用作为目标的别名使用,对引用的改动实际就是对目标的改动。

eg:int& a=b; b=5; ----->a:5 b:5 &a:00F3:5300 b:00F3:5300 引用与原目标地址相同

利用引用传递参数可以让用户无须知道函数如何工作

void swap(int &a,int &b)

swap(x,y);

引用具有指针的威力 可读性强

引用作为返回值时 需要先创建一个变量 将函数返回值赋给这个变量 然后再以变量来初始化引用 int x=fn(4.0) int &y=x;

结构

声明一个结构并不分配内存,内存分配发生在定义这个新数据类型的变量中。

数组是一个数据类型的聚集,它本质不是数据类型。

面向对象

类是c++封装的基本单元,它把数据和函数封装在一起。

类定义中默认情况下的成员是private的 而结构定义中默认情况下的成员是public 的

在c++中 类与结构的区别 就在于成员默认状态 (class)struct A {}     A a 则存在栈上 A a=new A 存在堆上

将类定义和其他成员函数定义分开,是目前开发程序的通常做法。我们把类定义看成是类的外部接口,类的成员函数定义看成类的内部实现。

c++建立和初始化对象的过程专门由该类的构造函数来完成。

当对象撤销时(生命周期结束后),析构函数会马山被调用。

局部和静态对象,以声明的顺序构造,不是根据运行顺序来决定变量定义的顺序。

静态对象只被构造一次,跟静态变量,全局对象一样在主函数开始运行前全部构造完毕。

析构函数以与构造函数相反的顺序被调用。

堆与拷贝构造函数

分配堆对象: new delete

记录C++学习历程的更多相关文章

  1. 完成了C++作业,本博客现在开始全面记录acm学习历程,真正的acm之路,现在开始

    以下以目前遇到题目开始记录,按发布时间排序 ACM之递推递归 ACM之数学题 拓扑排序 ACM之最短路径做题笔记与记录 STL学习笔记不(定期更新) 八皇后问题解题报告

  2. Linux学习历程——Centos 7重置root密码

    一.自述 最近刚刚接触linux,因为我设置密码比较随性,把自己做系统的时候设置的root密码给forget,每当系统崩溃,重新把虚拟机备份还原后,就面临无法登陆的尴尬情况,只得重置root密码,好了 ...

  3. Nginx系列0:Nginx学习历程

    Nginx学习历程 一.初识Nginx 1.Nginx适用于哪些场景 (1)静态资源服务 通过本地文件系统提供服务 (2)反向代理服务 Nginx的强大性能 缓存 负载均衡 (3)API服务 Open ...

  4. 记录Python学习中的几个小问题

    记录Python学习中的几个小问题,和C#\JAVA的习惯都不太一样. 1.Django模板中比较两个值是否相等 错误的做法 <option value="{{group.id}}&q ...

  5. 记录android学习、开发过程温故知新

    记录android学习.开发过程温故知新

  6. 我的Linux学习历程:那些我看过的Linux书籍们

    [+]查看原图http://www.ituring.com.cn/article/119401 来北京工作已经一个多月,大都市的生活比起读大学要忙碌得多,尤其是出行,基本以小时为基本的计时单位.有时茫 ...

  7. StudyJams学习历程总结

    Study Jams 是一个学习 Google 在线课程的活动.该活动由学员自发组建课程学习小组,旨在带领小组成员入门 Android 开发,最终将 Android App 上载至 Google Pl ...

  8. Oracle学习历程--创建用户,分配表空间

    记录下学习Oracle12c的过程中的点点滴滴. Oracle12c新特性:http://www.cnblogs.com/kerrycode/p/3386917.html --创建临时表空间CREAT ...

  9. 大三仍是Linux系统小白的我给大家讲讲学习历程

    我与Linux结缘是在大三的时候.我与Linux熟识是在偶然遇到<Linux就该这么学>的时候.因为我是电子信息工程专业,在高年级时开设了嵌入式课程,嵌入式系统是一种专用的计算机系统,作为 ...

随机推荐

  1. [Android疑难杂症]动态改变Background后Padding无效的问题

    前言 在Layout中指定好background和padding以后,程序里面动态修改background之后padding就失效了,貌似是一个BUG,这里找到了一篇英文文章,简单翻译分享一下. 声明 ...

  2. The Ninth Hunan Collegiate Programming Contest (2013) Problem I

    Problem I Interesting Calculator There is an interesting calculator. It has 3 rows of button. Row 1: ...

  3. 使用升级版的 Bootstrap typeahead v1.2.2

    上次介绍了 Bootstrap 2 中附带的 typeahead,功能强大,但是使用起来不太方便,作者 Terry Rosen 已经升级了一个新版本 v1.2.2,作出了很大的改进. 下载地址 htt ...

  4. centos7安装tftp服务器

    1.安装 su #进入root yum install xinetd yum install tftp yum install tftp-server 2.配置tftp vim /etc/xinetd ...

  5. Linux下的多进程编程

    1.进程 1.1进程的定义 <计算机操作系统>这门课对进程有这样的描述:进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统 ...

  6. HTTP长连接200万尝试及调优

    对于一个server,我们一般考虑他所能支撑的qps,但有那么一种应用, 我们需要关注的是它能支撑的连接数个数,而并非qps,当然qps也是我们需要考虑的性能点之一.这种应用常见于消息推送系统,也称为 ...

  7. Solaris引导和关闭

    OpenBoot PROM简称OBP,相当于PC的BIOS,是控制SUN服务器的引导过程.初始化配置某些硬件并提供某些诊断的工具.常见OBP命令 boot boot:从默认设备启动boot -s:从默 ...

  8. C++ 必知必会:条款15 成员的指针并非指针

    指向类成员的类成员的指针说是“指针”,其实是不合适的,因为他既不包含地址,其行为也不像指针 常规的指正,包含地址,对其解应用可以得到该指针包含地址所指向的对象 1: int a = 12: 2: in ...

  9. Jquery设置select控件指定text的值为选中项

    <select name="streetid" id="streetid"> <option value="4">北 ...

  10. centos下网络的基本配置方法讲解

    上一篇中我们已经成功安装了我们的centos系统,但是我们可能发现我们安装的centos上不了网,所以这一章我们来说说如何配置centos来连接外网和局域网. 我们首先来认识一下linux下部分网络配 ...