C++高级主题

1 函数指针和实参推断
Template int compare
Int (*pf1)(const int &,const int &)=compare;

2 我们通常见到的引用(int &a=b;)可以称之为左值引用,而右值引用则是int &&a的形式。将左值也绑定到右值引用上,
我们可以显式的使用move将一个左值转换为对用的右值引用类型。
int a = 1
int&& b = std::move(a);

3 remove_reference用于移除类型的引用,返回原始类型。

4 tuple<T1,T2,…Tn> t; t是一个tuple,成员数为n,第I个成员类型为Ti,所有成员都进行初始化。
Get(t) 返回t的第I个数据成员的引用;如果t是一个左值,结果是一个左值引用;
Tuple_size::value 一个类模板,可以通过一个tuple类型初始化。它有一个名为value的public constexpr
static数据成员,类型为size_t,表示给定tuple类型中成员的数量。

5 typied运算符,它允许程序向表达式提问:你的对象是什么类型?

6 数据成员指针:const string Screen::pdata; 是指向一个常量(非常量)Screen对象的string成员。
Screen myScreen, 
pScreen =&myScreen;
Auto s=myScreen.pdata;
s=pScreen->
pdata;

7 如在定义局部变量时不赋值的话,则对静态变量来说,编译时自动赋初值0或空字符。而对自动变量来说,如果不赋值,
它的值是一个不确定的值。

8 没有初始化的指针为空,不指向任何对象,也不调用构造函数。

9 dynamic_cast将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做
相应处理, 即会作一定的判断。 对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针; 对引用进行
dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。
reinterpret_cast这个转换是最“不安全”的,两个没有任何关系的类指针之间转换都可以用这个转换实现。
static_cast静态转换是最接近于C风格转换,很多时候都需要程序员自身去判断转换是否安全。
const_cast这个转换好理解,可以将常量转成非常量。

10 只有在使用时才为该类型变量分配内存的存储类是属于动态存储类型。
在动态存储去中一般存放以下三类参数:
1.函数的形式参数【在调用函数时给形参分配存储空间】
2.函数中定义的局部变量(未加static类型的)—》自动变量auto
3.函数调用时的现场保护和返回地址—》寄存器变量register
自动变量和寄存器变量在函数内的可见性和存在性是一致的,即在函数执行期间,变量是存在的,且可以被引用。
在函数外的可见性和存在性也是一致的,即离开函数后,变量不存在,不能被引用。
static和extern所说明的变量是静态存储类型的变量,程序运行时系统就会为该类变量分配存储单元。

11 可以调用shrink_to_fit来要求vector将超出当前大小的多余内存退回给系统。然而:调用shrink_to_fit只是一个请求,
标准库并不保证退还内存。

12 嵌套类的名字在外层类作用域中是可见的,在外层类作用域之外是不可见的。嵌套类名字不会和别的作用域中的同一个名字冲突。

13 链接指示:extern “C”, C++有时调用C语言编写的函数:
Extern “C” size_t strlen(const char );
Extern “C”{
Int strcmp(const char
,const char);
Char 
strcat(char,const char);
}

14 C语言不支持函数重载,一个C链接指示只能用于说明一组重载函数的某一个:
Extern “C” double calc(double);
Extern SmallInt calc(const SmallInt&);
Extern BigNum calc(const BigNum&);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值