首页 > 代码库 > C++ primer 第一部分C++基础(1-7章) 不熟悉的知识点 小结
C++ primer 第一部分C++基础(1-7章) 不熟悉的知识点 小结
P58 constexpr 和常量表达式
常量表达式 是指值不会改变 并且 在编译过程 就能得到计算结果的表达式;
字面值属于常量表达式;
用常量表示式初始化的const对象 也是常量表达式;
constexpr变量
C++11:允许将变量声明为constexpr类型以便 由编译器来验证变量的值是否是一个常量表达式;
一般来说,如果你认定变量是一个常量表达式,那就把它声明成constexpr类型;
P214 constexpr函数:是指能用于常量表达式的函数
- 函数的返回值类型及所有形参的类型都得是 字面值类型;
- 函数体中必须有且只有一条return语句.
constexpr函数不一定返回常量表达式!!!
P62 decltype 类型说明符
C++11:decltype的作用是选择并返回操作数的数据类型;
decltype( f() ) sum = x;
//sum的类型就是函数f的返回类型;
decltype 与 引用:
切记:decltype( (variable) ) 双层括号,结果永远是引用
// decltype的结果可以是引用;
int i =23, *p = &i , &r = i;
decltype (r+0) b;
// r+0 结果是一个int;√
decltype (*P) c; // 错误!!!
//如果表达式内容为 解引用操作,则decltype 将得到一个引用类型,引用类型必须初始化;
P109 C风格字符串
char *p = "abcdef"; //空字符‘\0‘结尾;
C标准库的String函数
// C风格字符串的函数
// #include <cstring>
strlen(p) 返回p的长度,空字符不计算在内;
strcmp(p1,p2) 比较p1,p2是否相等:若p1=p2,返回0,p1>p2,返回正值,p1<p2,返回负值
strcat(p1,p2) 将p2附加到p1之后,返回p1;
strcpy(p1,p2) 将p2拷贝给p1,返回p1;
与旧代码的接口
string s("hello world!");
- 允许使用以空字符结束的字符数组来初始化string对象,或为string对象赋值;
- 在string对象的加法运算中,允许以空字符结束的字符数组作为其中一个运算对象(不能都是);
- 不能用string对象直接初始化指向字符的指针;
- 但使用string专门提供的 c_str 成员函数可以完成该功能;
char *str = s; //error! 不能用string对象初始化 char*;
const char *str = s.c_str(); // 正确!!!
C++ primer 第一部分C++基础(1-7章) 不熟悉的知识点 小结
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。