TOP

C++的一些基础细节(备考用)
2014-11-13 00:25:11 】 浏览:9863
Tags:一些 基础 细节 备考

  class node


  {


  public:


  node(){cout<<"constructor node()"<


  ~node(){cout<<"destructor ~node()"<


  };


  class nn


  {


  public:


  node x;


  nn(){cout<<"con nn()"<


  ~nn(){cout<<"des ~nn()"<


  };


  int main()


  {


  nn a;


  return 0;


  }


  几年前的一份C++笔记。


  看完了Bruce Eckel的Thing in C++(Volume 1),实践比较少,感觉还是半懂不懂,马上就要【面向对象程序设计】的考试了。考的是C++的东西,做了几份C++的卷子,感觉好多细节的东西还是很不确定,不敢下手。于是今天把老师的课件翻了出来,整理了一下,做了个小结。虽然感觉很乱,但是对于我自己来说,还是能看懂,很多东西都很显而易见的也写了,无论怎样,只是为了考试^_^


  --------------------------------------------------------------------------------


  extern int xx 这是一个声明,而不是定义


  --------------------------------------------------------------------------------


  在class temp中只定义一个static int b;


  1 sizeof(temp) = 1;


  这是为什么?


  static 变量是这个类共享的,变量是放在全局变量区,不是堆栈里,因此sizeof出来不算在这个static int的大小;是这样的吗??


  --------------------------------------------------------------------------------


  枚举类型的变量只能进行赋值运算


  --------------------------------------------------------------------------------


  指针int *p,后不能直接进行*p = 12这样的赋值,因为指针p没有申请内存


  --------------------------------------------------------------------------------


  如何解释以下程序?


  1 int main()


  2 {


  3 int *a;


  4


  5 a = (int *)"string";


  6 cout<<*a<


  7 cout<


  8 return 0;


  9 }


  a指向一个string常量的,强制转换为int *,因此a还是"string"常量的首地址,*a应该是取前面几位的值


  --------------------------------------------------------------------------------


  析构函数的调用不一定要大括号


  如


  class node


  {


  public:


  node(){cout<<"node()"<


  ~node(){cout<<"~node()"<


  };


  int main()


  {


  if(1)


  node n;


  cout<<"out of if"<


  return 0;


  }


  输出为


  node()


  ~node()


  out of if


  另外,一个大括号就是一个scope,不管有没有if,while等语句


  --------------------------------------------------------------------------------


  if(!cin)


  相当于if(cin.fail())


  !的运算符在这里被重载了


  --------------------------------------------------------------------------------


  函数中的static变量在结束main()的时候才释放,但是在全局变量之前


  --------------------------------------------------------------------------------


  全局变量区:全局变量,静态全局变量,静态本地变量


  stack:本地变量


  heap:申请的变量,例如,new,malloc


  要注意的是new和malloc不能混用


  --------------------------------------------------------------------------------


  class 中的public表示所有的object都能访问


  private只能让类声明的函数和friend函数访问


  protected可以子类访问,也可以被friend函数访问


  --------------------------------------------------------------------------------


  无论是数组还是指针,传到函数中都变为指针


  --------------------------------------------------------------------------------


  只有在没有构造函数的情况下,编译器才自动分配一个构造函数,否则,只要


  编译器看到一个构造函数,就不会生成一个构造函数。


  另外,编译器自动生成的构造函数是没有参数的。


  --------------------------------------------------------------------------------


  根据函数的参数的个数或者类型的不同可以重载函数。


  如果只是返回值不同,则不能重载。


  --------------------------------------------------------------------------------


  缺省参数的函数。缺省值只能从后往前写。


  也就是说int f(int i , int j = 0);是可以的。


  但是int f(int i = 0 ; int j);是不对的。


  --------------------------------------------------------------------------------


  一个class中如果有const 常量,声明的时候不能初始化,否则编译器报错


  但是如果是static const int a = 0就可以


  class中的const int a可以在构造函数中初始化,注意只能在初始化列表中,不能在函数体中赋值


  其他的地方定义const 则需要初始化


  如果是extern const int a ;就可以不做初始化


  --------------------------------------------------------------------------------


  内联函数应该放在.h的文件中,因为它是一个声明


  另外在class中定义的函数是内联的


  --------------------------------------------------------------------------------


  1 const int a = 10;


  2 int y = a;


  是可以的



C++的一些基础细节(备考用) https://www.cppentry.com/bencandy.php?fid=80&id=11954

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇计算机二级辅导:VC字符串转换 下一篇WindowsApi学习笔记-设置线程的优..