C++ Primer 札记(一)


左值就是址值,右值就是数据值。

占位符

int (*matrix)[10]
注意*matrix 周围的括号是必需的因为下标操作符的优先级较高下列声明
int *matrix[ 10 ];
将matrix 声明成一个含有10 个指向int 的指针的数组

建议把inline 函数的定义放到头文件中

链接指示符extern "C"

引用必须被初始化为指向一个对象一旦初始化了它就不能再
指向其他对象指针可以指向一系列不同的对象也可以什么都不指向

对于不可寻址的值如文字常量以及不同类型的对象编译器为了实现引用必须生成一个临时对象引用实际上指向该对象但用户不能访问它。


函数指针与函数的区别

在外围域中的声明被嵌套域中的同名声明所隐藏

关键字extern 也可以在函数声明中指定惟一的影响是将该声明的隐式属性在其他地方定义变为显式的

查询系统的C++实现参考手册了解怎样从一个普通的C++头文件创建预编译头文件


extern int ival = 10;
double fica_rate;
extern void dummy() {}
虽然ival 是用extern 声明的但是它的显式初始化使得它实际上是个定义类似的情况
虽然dummy()显式地声明为extern 但是空花括号代表该函数的定义尽管fica_rate 没有被
显式地初始化但是因为缺少extern 因而也被视为C++中实际的定义这些定义如果在同
一程序的两个或多个文件中被包含就会产生重复定义的编译错误

当一个自动变量的地址被存储在一个生命期长于它的指针时该指针被称为空悬指针dangling pointer


对同一内存区应用了两次delete 表达式这通常发生在两个指针指向同一个动态分配对象的时候这是一个很难踉踪的问题若多个指针指向同一个对象当通过某一个指针释放了该对象时就会发生这样的情况此时该对象的内存被返回给空闲存储区然后又被分配给某个别的对象接着指向旧对象的第二个指针被释放新对象也就跟着消失了


在这种情况下用字符串操作assign()对原有的字符串对象重新赋值比删除原有的字符率对象并重新分配第二个字符串对象更为有效

发布了73 篇原创文章 · 获赞 12 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/MissLong/article/details/104174456
今日推荐