c++之入门
来源:互联网 发布:618淘宝也买酒 编辑:程序博客网 时间:2024/04/30 04:02
the first day
第一天的学习了解了一些常识:
一, c++之父:本贾尼.斯特劳斯特卢普(Bjarne Stroustrup);
二, c与c++不同:
1.c是面相过程的一门语言,而c++面相对象的语言,c++中最重要的就是对象,如果非要在c和c++中找某种联系的话,可以这么认为c++约等于c加面相对象。
2.c:效率(efficiency)+灵活(flexibility) c++:效率(efficiency)+灵活(flexibility)+抽象(abstraction)
3.c的标准头文件是#include<stdio.h> c++的标准头文件是#include<iostream>
当然还存在其他很多不同,以后补充吧
三, c++一个简单的Helloworld程序
#include <iosream>
using namespace std;//命名空间
int main()
{
cout<<"Helloworld"<<endl;
return 0;
}
这是最简单的程序,还没用到创建类和实例化对象;
四, new和delete:这两个东西就相当于c中的malloc()和free,new在堆上创建内存空间,delete用来释放删除这个空间,例如:
int *p=new int;//分配一个int型的内存空间
delete p;
int *p=new int[10];//分配10个int型空间
delete []p;
注意:使用new在堆上创建的内存空间是匿名的,没法直接使用,因此必须用一个指针指向它。
五, c++中有默认形参,定义函数时可以给形参指定一个默认的值,如果调用函数没有给形参赋值那么就使用这个默认的值,注意:默认形参只能放在形参列表的最后,例如:
void show(int a,int b=0,int c=1)
void show(int a,int b=0,int c)//错误,默认形参应放在最后
六, 重载:函数名称相同,但是函数参数列表不同,强调的是参数的个数,类型和顺序,以下情况不是重载
1.参数类型,顺序,个数相同,仅形参名字不同
2.参数类型,顺序,个数相同,仅返回值类型不同
void Swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void Swap(float *a, float *b)
{
float temp = *a;
*a = *b;
*b = temp;
}//这就是重载函数
七 ,内联函数:用一句话概括就是"空间换时间"。函数执行过程如下:
1.建立函数栈空间
2.保护现场
3.控制函数执行权利的转移
4.代码的执行
我们如果要反复调用函数时,过程1到4会消耗大量时间,这时内联函数就可以解决这个问题,它是在编译时将函数调用处用函数体替换,这样就不用浪费时间在1到4过程了,在类的内部声明的函数都会自动成为内联函数,在外部声明时需要加上inline这个关键字,而且要在函数定义处声明才有效。例如:
#include <iostream>
using namespace std;
class A
{
public:
void show()//自动成为内联函数
{
int a=10;
cout<<a<<endl;
}
void display();
}
inline void A::display()//必须在定义处加上inline关键字才是内联函数
{
cout<<"hello"<<endl;
}
八 .类的声明用关键字class,类的名字开头字母要大写,类是由成员变量和成员函数组成,它们一起又叫做类体,类=类声明+类体,而且class和struct很像,不过struct里面没有函数,struct默认是公有的(public),而class默认是私有的(private),对象的创建离不开类,类也离不开对象。
- cgi之c语言 入门
- C语言系列之-----入门
- cgi之c语言 入门 .
- Storm入门之附录C
- C语言入门之输入输出
- C语言入门之--指针
- Linux+C 入门之路
- C之入门总结_Lambda_17
- objective-c入门之@property指令 浅谈
- Objective-C之入门语法篇
- (1)objective c 入门之NSAutoreleasePool
- Objective-C语法入门之KVC & KVO
- Object - C 入门 之 数据类型详解
- 记录C语言入门学习之二
- 【C#】 .net入门之Windows窗体程序
- C语言入门之指针用法教程
- JNI之C语言(一)--快速入门
- Proc *C/C++入门之通讯区
- 强连通分量
- ionic 上拉菜单的样式坑
- 全文本搜索
- glsl_optimizer(Shader自动优化器) 的使用
- 编写一个Java程序输出1!+2!+3!+……+10!的和
- c++之入门
- 高斯消元
- 数组的使用
- Javascript-字符串对象浅记
- jQuery-遍历
- Android中view转换为bitmap为null解决方案
- 程序员面试金典——解题总结: 9.18高难度题 18.8---拓展: 实现一个Trie树
- Redis 常用命令
- 李弘毅机器学习路线图