C++ 学习日记day01

原创 2012年03月22日 20:56:40
C++语言程序设计
语法(6)
  C++概述:从C到C++的过渡
  类和对象
  运算符重载
  继承和多态
  异常和I/O流
数据结构和算法(3)
  堆栈、队列、链表、二叉树
  排序和查询算法
模板和STL(3)
  C++的模板
  STL标准模板库的容器类和泛型算法
第一课
1.C++简介
1.1发展简史
发明人:Bjarne Stroustrup,本贾尼.斯特劳斯特鲁普,C++之父。
1979,C++语言诞生在Bell实验室。
1983,第一个商业C++编译器版本。
1987,第一个GNU C++编译器。
1990,第一个Borland C++编译器。
1992,第一个Microsoft C++编译器。
1998,第一个C++ ISO标准,C++98,目前大多数编译器支持。
2003,做过修订。
2011,ISO/IEC 14882:2011,最新的C++国际标准,目前只有少数编译器支持。
1.2 C++和C
C++包含整个C,C是建立C++的基础。二者的区别:
1) C++的类型检查更严格;
2) C++比C更丰富:
   数据类型多,bool、引用、enum
   支持面向对象(OO),类、继承、多态
   支持运算符重载
   支持异常
   泛型编程,模板
3) C++比C更好用
   代码更简练
2. 第一个C++程序
1) 编译器g++
2) 源文件的扩展名.cpp/.C/.cxx/.cc
3) 头文件#include <iostream>
4) 使用了名字空间std
5) cout<<输出,cin>>输入
6) 变量声明随用随声明
3. 名字空间
namespace 名字空间名 {
    名字声明;
}
名字空间指令
using namespace 名字空间名;
名字空间声明
using 名字空间名::名字;
4. C++中的结构、联合和枚举
1) 结构
A. 使用结构定义变量可以省略struct关键字
C:
struct Student {
    char name[128];
    int age;
};
struct Student s = {"zhangfei", 22};
C++:
Student s = {"zhangfei", 22};
B. C++的结构里面可以定义函数
2) 联合
union UN {
    int n;
    char c[4];
};
A. 使用联合定义变量可以省略union关键字
B. 不定义变量,直接访问联合的成员
3) 枚举
在C++中enum是一个独立的数据类型,而不象在C中仅仅是整数。
5. 布尔类型bool
取值只有两个true/false
6. 引用类型
1) 引用就是一个变量的别名。
int n = 10;
int& r = n;
r = 20;
int* p;
p = &n;
2) 引用必须在声明的同时初始化。
// int& r;
// r = n;
3) 引用一旦初始化,就不能再成为另一个变量的引用。
int n = 10;
int& r = n;
int m = 20;
r = m; // n == 20
4) 不能有空引用。
int* p = NULL;
int a[10];
char* pa[10];
int& r[10]; // 错误
5) 不能声明引用型数组
6) 一般引用型变量不能引用常量,除非是const型引用。
int& r = 10; // 错误
const int& r = 10; // 正确
r = 20; // 报错
int* p = (int*)malloc (10*sizeof (int));
p[0] = 100;
free (p);
p = NULL;
if (p) {
    p[0] = 100;
}
7. C++运算符转换
&& and
|| or
!  not
&  bitand
|  bitor
~  compl
^  xor
8. C++的函数
1) 重载
在同一作用域中,函数名相同,形参表不同的函数可以有多个,他们构成重载关系。
重载匹配的原则:完全匹配>常量转换>升级转换>标准转换>自定义转换>省略匹配
add_int_int
add_double_double
C++换名
add
extern "C" {
   void foo (int n, char c) {...} // foo
}
2) 缺省参数
A. 如果函数的参数表中某一个形参具有缺省值,那么其右的所有参数都必须有缺省值。
B. 注意避免和重载发生冲突。
C. 当函数的定义和声明分开的时候,缺省参数只能出现在函数声明部分。
3) 哑元
void JPEG2BMP (int n) {...}; // V1.0
void JPEG2BMP (int) {...}; // V2.0
JPEG2BMP (20);
i++;
++i;
operator++
operator++ (int)
哑元是一种没有参数名的参数,主要是为了函数的区别和向前兼容。
4) 内联函数
A. 可以在获得函数调用的优势(计算实参表达式、类型检查等)的同时,提供接近与宏的性能。
B. inline关键字可以将一个函数声明为内联,但是inline只是建议。编译器未必真的将其处理为内联。
复杂函数不适合做内联。
递归函数不能做内联。
void foo (void) {
   if (...)
        foo ();
}
C. 隐式内联和显示内联
通过inline关键字声明的内联函数——显示内联
直接在类/结构的声明部分定义的成员函数——隐式内联
9. C++的内存分配
int* p;
int a[10];
int* p[10];
int (*p)[10];
int *p();
int (*p)();
int **p;
new/delete

相关文章推荐

重新学习c++ day01

课本以《c++ primer plus(第六版)》为主 第四章 复合类型一、跟string有关的几个函数 1.strcpy 原型声明:char strcpy(char dest, const ch...

开发日记——手机安全卫士 Day01 2016-7-20 完成主界面和设置密码功能

Day01 2016-7-20 完成主界面和设置密码功能 主界面采用线性布局,将功能分为手机防盗、通讯卫士、软件管家和手机杀毒四类。分别对这四类进行点击事件监听。 当点击手机防盗时,检查是否设置过密码...

C++MFC编程笔记day01 MFC介绍、创建MFC程序和重写消息处理

一、MFC概念和作用 1、全称Microsoft Foundation Class Library,我们称为微软基础类库,封闭了绝大部分的win32 Api函数,C++语法中的数据结构,程序的执行流程...

OC学习日记Day3:数据在内存的储存形式,CPU查找内存数据

Objective-C学习日记——Day3要点说明: a.理解数据以什么样的形式存储在内存当中。 b. 系统是怎么划分内存,怎么组织内存。 c. CPU是根据什么找到内存的数...

方立勋JavaWeb学习笔记Day01

  • 2011年09月18日 09:42
  • 573KB
  • 下载

Oracle学习笔记——day01

  • 2009年09月02日 23:02
  • 37KB
  • 下载

C++学习日记day06

第六课 1.动态绑定的底层实现——虚函数表 class A {...}; class B : public A {}; A* pa = new B; 当编译器编译如下语句时 pa -> f...

OC学习日记Day2:#include、#import和@class的工作原理

Objective-C学习日记——Day2 呆萌萌的@include 我们在用#include导入头文件时,头文件里一般都会加上以下代码 #ifndef __XIXI_H #define __XIX...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ 学习日记day01
举报原因:
原因补充:

(最多只允许输入30个字)