1,extern 关键字作用:
http://www.cnblogs.com/lzjsky/archive/2010/11/24/1886686.html
2,static 关键字作用:
https://baike.sogou.com/v3239767.htm?fromTitle=static
http://blog.sina.com.cn/s/blog_5f5fff010100cs98.html
3,volatile(直接存取原始内存地址)的作用:
作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化.
https://baike.sogou.com/v126455.htm?fromTitle=volatile
4,const 的作用:
const在*的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在*的右边,则指针的指向不可变。简记为“左定值,右定向”。
https://www.cnblogs.com/xudong-bupt/p/3509567.html
5,new 和 malloc 的区别:
https://blog.csdn.net/shanghairuoxiao/article/details/72876248
https://baike.sogou.com/v8439403.htm?fromTitle=realloc
6,C++ 多态性和虚函数表:定义了基类的指针,就去基类的虚函数表中去查要调用的函数。(此时,派生类新加入的函数地址已经在基类的 V-Table 中了)
https://blog.csdn.net/haoel/article/details/1948051/#commentBox
http://www.cnblogs.com/chinazhangjie/archive/2012/07/11/2586535.html(值得一看)
7,类继承中的成员布局情况:(突然想到,还未查相关资料)
8,指针和引用的区别:
数组和指针的联系:
https://blog.csdn.net/thisispan/article/details/7456169
9,智能指针:(需要看看)
http://www.cnblogs.com/xiehongfeng100/p/4645555.html
10,C++ 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
dynamic_cast: 作用:主要用于进行“下行转换时”的类型安全检查
思考1:什么是“下行转换”?
思考2:什么是不安全的转换?为什么不安全?
1 class B { 2 public: 3 int m_iNum; 4 virtual void foo(); 5 }; 6 7 class D : public B { 8 public: 9 char *m_szName[100]; 10 }; 11 12 //@ 如果 pb 指向一个 D 类型的对象,此时 pd1 和 pd2 是一样的, 13 // 并且这两个指针执行 D 类型的任何操作(比如访问 D 的成员函数)都是安全的。 14 //@ 如果 pb 指向一个 B 类型的对象,此时 pd1 将是一个指向该对象的指针(用 static_cast 转型不检查安全性), 15 // 对它进行 D 类型的操作将是不安全的(例如访问 m_szName),此时 B 对象内没有 D 对象中的成员, 16 // 故把这个 转型的 D 类型的指针当作真正的 指向 D 对象的指针来用是不安全的)。 17 // @ 当用 dynamic_cast 进行转型时,此时 pd2 将是一个空指针,这是用该指针进行访问会直接报错,所以是安全的。 18 19 //@ 下行转换:就是把一个指向基类对象类型的指针强制转换为指向派生类对象类型的指针 20 21 void func(B *pb) { 22 D *pd1 = static_cast<D*>(pb); 23 D *pd2 = dynamic_cast<D*>(pb); 24 }