c++ = c + ?

namespace

const

!考点
从右往左看法

  1. const int * p;
  2. int const * p;
  3. int * const p;
  4. const int * const p;
    首先,4没有什么好说的。其他的都首先找到变量p,然后从右往左解析。看看1,p是一个指针,指向的是一个int,然后int是const的。即p是一个指向const int的指针。看看2,p是一个指针,指向一个const什么东西,然后发现const的是int。即p是一个指向const int的指针。看看3,p是一个const的什么东西,然后发现是const的指针,然后发现指向的是int。即p是一个指向int的const指针。看看4,其实不需要分析了,就是最严格的形式。

new/delete

!考点
new/delete表达式与malloc/free的区别是?
1)malloc/free是C/C++语言的标准库函数,new/delete是C++的运算符或表达式 ;
2)new能够自动分配空间大小,malloc需要传入参数; 3)new开辟空间的同时还对空间做了初始化的操作,而malloc不行;
4)new/delete能对对象进行构造和析构函数的调用,进而对内存进行更加详细的工 作,而malloc/free不能。

引用/别名

强制转换

static_cast: 一般转换

dynamic_cast:基类、派生类

const_cast: 常量指针/常量引用/常量对象,转换成非常量(且指向原来对象)

reinterpret_cast:重新解释,随意转换

函数重载

函数默认参数

bool 类型

inline 函数

异常安全

throw

1
2
3
4
5
double division(double x, double y)
{
if(y == 0)
throw "Division by zero condition!";
return x / y; }

try catch

1
2
3
4
5
6
7
8
9
10
void test() {
double x, y;
cin >> x >> y;
try {
if(y == 0)
throw y;
else
cout << (x / y) << endl;
} catch(double d) {
cout << "catch(double)" << endl;