首先这篇文章为自己看到某些帖子后的一些心得和总结,人常说好记性不如烂笔头,所以,还是要做做笔记。

 

父类引用指向子类对象

 

内部类:虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不相关。它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类。嵌套类的出现只是 告诉外围类有一个这样的类型成员供外围类使用。并且,外围类对嵌套类成员的访问没有任何特权,嵌套类对外围类成员的访问也同样如此,它们都遵循普通类所具 有的标号访问控制。

 

1.extern和static的区别

    (1)修饰局部变量

        一般情况下,对于局部变量是存放在栈区的,并且局部变量的生命周期在该语句块执行结束时便结束了。但是如果用static进行修饰的话,该变量便存放在静 态数据区,其生命周期一直持续到整个程序执行结束。但是在这里要注意的是,虽然用static对局部变量进行修饰过后,其生命周期以及存储空间发生了变 化,但是其作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。

        对于静态局部变量如果没有进行初始化的话,对于×××变量系统会自动对其赋值为0,对于字符数组,会自动赋值为'\0'.

   

    (2)修饰全局变量

        对于一个全局变量,它既可以在本源文件中被访问到,也可以在同一个工程的其它源文件中被访问(只需用extern进行声明即可)。

       

如:

  1. //有file1.c  
  2. int a=1;  
  3. file2.c  
  4. #include<stdio.h>  
  5. extern int a;  
  6. int main(void)  
  7. {  
  8. printf("%d\",a);  
  9. return 0;  

则执行结果为 1

但是如果在file1.c中把int a=1改为static int a=1;

那么在file2.c是无法访问到变量a的。原因在于用static对全局变量进行修饰改变了其作用域的范围,由原来的整个工程可见变为本源文件可见。

 

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

 

2.关于声明和定义

    其实关于这二个词的主要区别应该就是:是否分配存储空间。

    变量和对象不加extern永远是定义,类中的除外.函数只有函数头是声明,有函数体是定义.

class A;叫声明
class A{....};叫定义

类成员函数的函数体是定义.


class C
{
static int x;//这里的x是声明
static const int a;;//这里的a是声明
//非static变量在类定义对象时才分配内存.
C();//这里的函数是声明
};
int C::x;//这个才是定义
const int C::a=11;//这个才是定义

 

3.双冒号

    C++里的,是“域操作符”。 比如声明了一个类A,类A里声明了一个成员函数void f(), 但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f()函数是类A的成员函数。

::一般还有一种用法,就是直接用在全局函数前,表示是全局函数。 比如在VC里,你可以在调用API 函数里,在API函数名前加::

4.