c++学习1
来源:互联网 发布:房地产税 知乎 编辑:程序博客网 时间:2024/06/05 16:39
(1)c++之父:本贾斯.斯特劳斯特卢普
(2)c++语言的标准:c++98 c++03 c++11 c++14
(3)c++集成开发工具(IDE):Eclipse CDT(Linux环境)
VS(windows环境)
(4)c++对c的升级(区别)
c++是一种面向对象的语言,而c是面向过程的语言
(5)面向对象的三大特点:继承,多态,封装
因此c++作为面向对象的过程:继承决定其维护性好,封装决定其复用性强,多态决定其扩展性好
(6)c++支持的编程范式
{
(1)过程式
(2)数据抽象
(3)基于对象
(4)面向对象式
(5)函数式
(6)泛型形式
(7)模板元形式
}
(7)设计模式
{
简单工厂模式
工厂模式
代理模式
适配器模式
}
(8)c++中int i可以在for中定义
例子:for(int i = 0;;i++)
i只在这个for循环里有用,防止对for循环之后的i产生未知的影响
(9)c语言里register关键字存储在寄存器中,无法取得register修饰的变量的地址
c++中register修饰的变量可以取得变量的地址
(10)c语言中const修饰变量的内存空间可以修改,但无法通过变量名修改值‘
c++中修饰的变量不能访问(包括内存)
也就是const int 只能用const int来接收
(11)new和malloc的区别
{
1.new是c++里出现的,malloc是c库的
2.new属于运算符,malloc属于函数
3.new一具体类型为单位,malloc以字节为单位
char *ptr = new char[2];
int (*p)[2] = new int[2][2]
char *p = (char *) malloc(100 * sizoef(char))
4.new在单个类型变量可进行初始化,malloc不可以
}
(12)引用vs指针
引用是给一个变量起别名
类型 &引用名 = 变量名
int a = 1;
int &b = a;
注意:引用一定要初始化,指明引用变量是谁的别名
在c++中,如果传num的值,用int &num来接,即对num的内存空间进行修改,num本来的之也会改变
区别:引用访问一个变量是直接访问,而指针是间接访问
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有内存空间
引用一经初始化不能再引用其它的变量,而指针可以
尽可能使用引用,不得已使用指针
(13)内联函数(以空间换时间)
inline void add()
将子函数直接嵌进去(以内存空间换运行时间)
宏函数(以编译时间换运行空间)
内联函数与带参数宏区别
1.内联函数调用时,要求实参与形参类型一致,内联函数会先对实参表达式求值,然后传递给形参,而宏调用时只用实参简单代替形参
2.内联函数是在编译时在调用的地方将代码展开,而宏在预处理进行替换
3.在c++建议采用inline函数代替带参数宏
(14)函数重载
可以采用相同的函数名,但形参类型,个数,顺序不能都一样
例子:int add(int a);
int add(int a,int b);
int add(char a,int b);
这三个子函数可以同时存在,因为c++中,相同函数名讳自动根据形参区别,返回值不同不能作为重载条件
(15)在c++中调用c编译的函数,必须用extern "C"混合编译
#ifdef __cpluscplus
extern "C"
{
#endif
int add(int a, int b)
#ifdef __cpluscplus
}
#endif
(16)默认参数
int add(int a, int b = 1, int c = 2)
{
return a + b + c;
}
add(1)的值就是1+1+2 = 4
默认参数必须从右到左连续,即不能int add(int a = 1, int b, int c = 2)
函数重载与默认参数有可能冲突
(2)c++语言的标准:c++98 c++03 c++11 c++14
(3)c++集成开发工具(IDE):Eclipse CDT(Linux环境)
VS(windows环境)
(4)c++对c的升级(区别)
c++是一种面向对象的语言,而c是面向过程的语言
(5)面向对象的三大特点:继承,多态,封装
因此c++作为面向对象的过程:继承决定其维护性好,封装决定其复用性强,多态决定其扩展性好
(6)c++支持的编程范式
{
(1)过程式
(2)数据抽象
(3)基于对象
(4)面向对象式
(5)函数式
(6)泛型形式
(7)模板元形式
}
(7)设计模式
{
简单工厂模式
工厂模式
代理模式
适配器模式
}
(8)c++中int i可以在for中定义
例子:for(int i = 0;;i++)
i只在这个for循环里有用,防止对for循环之后的i产生未知的影响
(9)c语言里register关键字存储在寄存器中,无法取得register修饰的变量的地址
c++中register修饰的变量可以取得变量的地址
(10)c语言中const修饰变量的内存空间可以修改,但无法通过变量名修改值‘
c++中修饰的变量不能访问(包括内存)
也就是const int 只能用const int来接收
(11)new和malloc的区别
{
1.new是c++里出现的,malloc是c库的
2.new属于运算符,malloc属于函数
3.new一具体类型为单位,malloc以字节为单位
char *ptr = new char[2];
int (*p)[2] = new int[2][2]
char *p = (char *) malloc(100 * sizoef(char))
4.new在单个类型变量可进行初始化,malloc不可以
}
(12)引用vs指针
引用是给一个变量起别名
类型 &引用名 = 变量名
int a = 1;
int &b = a;
注意:引用一定要初始化,指明引用变量是谁的别名
在c++中,如果传num的值,用int &num来接,即对num的内存空间进行修改,num本来的之也会改变
区别:引用访问一个变量是直接访问,而指针是间接访问
引用是一个变量的别名,本身不单独分配自己的内存空间,而指针有内存空间
引用一经初始化不能再引用其它的变量,而指针可以
尽可能使用引用,不得已使用指针
(13)内联函数(以空间换时间)
inline void add()
将子函数直接嵌进去(以内存空间换运行时间)
宏函数(以编译时间换运行空间)
内联函数与带参数宏区别
1.内联函数调用时,要求实参与形参类型一致,内联函数会先对实参表达式求值,然后传递给形参,而宏调用时只用实参简单代替形参
2.内联函数是在编译时在调用的地方将代码展开,而宏在预处理进行替换
3.在c++建议采用inline函数代替带参数宏
(14)函数重载
可以采用相同的函数名,但形参类型,个数,顺序不能都一样
例子:int add(int a);
int add(int a,int b);
int add(char a,int b);
这三个子函数可以同时存在,因为c++中,相同函数名讳自动根据形参区别,返回值不同不能作为重载条件
(15)在c++中调用c编译的函数,必须用extern "C"混合编译
#ifdef __cpluscplus
extern "C"
{
#endif
int add(int a, int b)
#ifdef __cpluscplus
}
#endif
(16)默认参数
int add(int a, int b = 1, int c = 2)
{
return a + b + c;
}
add(1)的值就是1+1+2 = 4
默认参数必须从右到左连续,即不能int add(int a = 1, int b, int c = 2)
函数重载与默认参数有可能冲突
0 0
- 【c/c++】学习笔记1
- C学习笔记1
- C 学习笔记1
- OBject-C学习1
- object-c学习1
- c语言学习1
- C语言学习1
- Objective-C学习1
- Objective-C学习1
- C语言-学习---1
- Obejective-c学习1
- C 语言学习 1
- C语言学习1
- c++thread学习(1)
- C--学习笔记1
- android 1C 学习
- C语言学习1
- 一起学习C,C++__boost--序(1)
- 初来乍到,个人博客网站
- oracle各种连接介绍
- 几本GPU相关的书
- Andorid 之日历控件,可左右滑动,包含公历,农历,节假日等
- 创建git版本库
- c++学习1
- Maven编译时变量替换
- 有图片资源,但是报 android.content.res.Resources$NotFoundException 的问题
- spring线程池ThreadPoolExecutor配置并且得到任务执行的结果
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(八)SpringMVC上传文件到FastDFS
- 一文读懂卷积神经网络CNN
- 谈谈自己对REST、SOA、SOAP、RPC、ICE、ESB、BPM知识汇总及理解
- MySQL表的导入导出
- 深入理解linux设备驱动