::域解析符号
1、命名空间
2、类的函数的定义(体外定义)
返回值 类名::函数名(参数列表)
"stdio.h" :当前环境进行寻找
<stdio.h> :系统环境进行寻找
<iostream.h> :
旧的头文件,非标准输入输出流,可以直接使用cin,cout
<iostream> :
新的头文件,标准输入输出流,不可以直接使用cin,cout,必须要使用标准命名空间
bool函数 :非零即一!!!
C++中的const常量会被编译器放到符号表中,和一般变量使用的不是一个存储空间,不可以用指针进行更改,因为他的存储空间不是一般的内存,是符号表。
C++中const和define的区别:
1、define是由预处理器处理的,单纯的文本替换;
const是由编译器进行处理的,提供类型检查和作用域检查。
2、define没有数据类型;
const有数据类型。
C++中引用:互为别名。引用在定义时需要加'&',但是在使用的时候不能添加,使用时添加'&'代表取地址。
using指令的意义:
using NSA::a此时是作为申明;
using namespace std此时是作为编译指令。
内联函数(inline):
当函数体比较简单时内联函数可以提高效率;
#define和inline的区别:
1、#define只是简单地文本替换,无数据类型检查;
inline是内嵌函数,相当于副本调用。
2、#define是在预编译期,预处理器对其进行展开;
inline是在编译时编译器对其进行展开。
3、#define在本质上不是函数;
inline是函数。
#define在使用时要多使用括号。
C++中的函数重载:
1、重载函数在本质上是相互独立的不同函数
2、重载函数的函数类型不同;
3、函数的返回值不能作为函数重载的依据;
4、函数重载是由函数名和参数列表决定的;(参数列表不同包括参数的个数不同、类型不同和排列顺序不用等)
函数重载的二义性:
两个函数一个有两个参数,一个有三个参数,但是第三个参数是默认参数,在调用时编译器就不知道你在调用哪一个函数。
int add(int a,int b);
int add(int a,int b,int c = 10);
调用add(10,20);时编译器就会报错,产生了二义性。
面向对象的特点:
1、抽象:隐藏了具体实现,对外只表现关键使用;
2、封装:通过公有的函数模块操控私有的数据就是封装,只提供外部接口;
3、继承:新类是原来的类派生出来得,只是增加或者修改了部分属性和操作。(一般情况下只增加不修改,如果通过新的类对原来的类进行修改,原来的类也会进行变更)
4、多态性:同一个函数对不同的对象产生不同的结果。
面向对象的优点:
通过继承、封装、多态降低了程序的耦合度,并结合设计模式使程序更容易修改和拓展,可以复用。
耦合度就是模块之间的依赖程度。
面向对象编程要做到高内聚,低耦合。
面向对象的缺点:
相比较C语言,运行的效率会下降。
类和对象:
1、将属性和方法封装在类中
2、访问控制
class father
{
private(protected):
(属性)私 外部不可访问
public:
(方法)公 外部可以访问
};
C语言中的struct和class的区别:
class具有成员函数,在public中;
struct(c)只含有数据;
C++中的struct和class的区别:
struct(C++)默认权限是public;
class的默认权限是private;
类模板:class可以表示模板类型;
struct不可以表示模板类型。
类中的成员函数在外部进行定义:
返回值 类名::函数名(参数列表);
int *ptr = (int *)malloc(sizeof(int));
*ptr = 3
free(ptr);
等同于
int *ptr = new int;
*ptr = 3;
delete ptr;
int *ptr = new int(3);
delete ptr;
new 数组
int *array = new int[10];
array[2] = 9;
delete []array;