面试中也曾经遇到过一些语法类的问题,大部分能够解决,但是也有很多做不出来,今天开始进行C++语法的总结,尤其因为我完全不用Java,所以,C++语法就显得愈加重要,开始阶段可能是一些我已经掌握的表面的知识,之后就是一些比较深层次或者偏门的知识,希望能一天一道,20天左右总结一遍。。
另外,如果各位看到我blog的同学或者前辈觉得我写的有啥错误,也请不吝赐教,因为我C++用的时间并不长,很多东西理解的并不好。。
NO.1 虚函数(virtual function)
这个应该算是我平时可以掌握的知识,因为自己写代码的时候也可能会涉及,就举一个最简单的例子吧,类定义如下所示:
#define NAME_SIZE 50
class Person {
int id; // all members are private by default
char name[NAME_SIZE];
public:
void aboutMe() {
cout << "I am a person.";
}
};
class Student: public Person {
public:
void aboutMe() {
cout << "I am a student.";
}
};
如果运行:
Student* p = new Student();
p->aboutMe();
输出的是"I am a Student",但是,如果运行:
Person* p = new Student();
p->aboutMe();
输出的是"I am a Person",这是因为aboutMe()这个函数是在编译的时候解析的,这种机制是static - binding
如果把aboutMe()写作虚函数,则机制是dynamic - binding,