类:我们声明定义一个类。
对象:类的一个实例。
类中的成员函数,隶属于所有类的对象,在编译时,成员函数的地址已经确定。
类中的成员变量,隶属于每一个具体的对象,需要在对象构造时初始化,以及析构时进行清理,成员函数访问对象中的成员变量时都是通过this指针。
1 class A
2 {
3 public:
4 void foo()
5 {
6 cout<<"call foo"<<endl;
7 }
8 };
9 int _tmain(int argc, _TCHAR* argv[])
10 {
11 A *p = NULL;
12 p->foo();
13
14 return 0;
15 }
这个程序会正常输出 call foo。
虽然p指针为空指针,但是foo成员函数中没有对成员变量的访问,编译器会对如下函数调用进行转换,传入this指针。然后在foo函数中并没有对this指针的使用,所以不会coredump或出现别的未定义行为。
1 A a;
2 a.foo(); //->foo(&a);
3 A *p = NULL;
4 p->foo(); //->foo(p);
静态成员变量与静态成员函数是隶属于类的,通过类名::静态成员 直接进行访问。
不是private的成员都可以被子类继承。
静态成员变量不被子类继承。