初始化列表

类名::类名(形参1,形参2,...形参n):数据成员1(形参1),数据成员2(形参2),...,数据成员n(形参n)

{

...

}

规则1,初始化列表进行数据成员的初始化

规则2,初始化列表进行父类的初始化

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class A
  5. {
  6. private:
  7. int i;
  8. public:
  9. A(int ii) :i(ii)//初始化列表
  10. {
  11. std::cout << "A::A()" << std::endl;
  12. }
  13. ~A()
  14. {
  15. std::cout << "~A::A()" << std::endl;
  16. }
  17. void print()
  18. {
  19. std::cout << "A::print()" << i << std::endl;
  20. }
  21.  
  22. void print(int i)
  23. {
  24. std::cout << i << std::endl;
  25. print();
  26. }
  27.  
  28. void set(int ii)
  29. {
  30. i = ii;
  31. }
  32. };
  33.  
  34. class B :public A
  35. {
  36. public:
  37. B() :A()
  38. {
  39. std::cout << "B::B()" << std::endl;
  40. }
  41. ~B()
  42. {
  43. std::cout << "B::~B()" << std::endl;
  44. }
  45. void print()
  46. {
  47. std::cout << "B::print()" << std::endl;
  48. }
  49. void f()
  50. {
  51. set();
  52. print();
  53. }
  54. };
  55.  
  56. void main()
  57. {
  58. B b;
  59. b.set();
  60. b.print();
  61. b.f();
  62. b.A::print();
  63.  
  64. system("pause");
  65. }

派生类与基类都定义有构造函数时,则编译器先调用基类的构造函数,如有对象成员则执行对象成员的构造函数,最后是派生类的构造函数。析构函数与构造函数完全相反的顺序。

面向对象程序设计-C++_课时16子类父类关系的更多相关文章

  1. 面向对象程序设计-C++_课时22向上造型

    赋值兼容规则是指在公有派生情况下,一个派生类的对象可以作为基类的对象来使用的情况. 约定类derived是从类base公有派生而来的,则指如下3种情况: (1)派生的对象可以赋给基类的对象.例如: d ...

  2. 面向对象程序设计-C++_课时14对象组合_课时15继承

    对象组合,就是一个类的对象作为另外一个类的成员,涉及类的对象,对象是实体,玩实 继承,涉及类,类是概念,玩虚 public: 所有人都可以接触 private: 数据放private protecte ...

  3. 面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换

    区分初始化,赋值 #include <iostream> using namespace std; class Fi { public: Fi() {}//1构造函数 }; class F ...

  4. 面向对象程序设计-C++_课时28静态对象_课时29静态成员

    Static in C++ Two basic meanings Static Storage --allocated once at a fixed address Visibility of a ...

  5. 面向对象程序设计-C++_课时26拷贝构造Ⅰ_课时27拷贝构造Ⅱ

    一旦写了一个类,给它3个函数: 1default construtor 2virtual destructor 3copy constructor Constructions vs. assignme ...

  6. 面向对象程序设计-C++_课时24多态的实现

    所有带virtual的类的对象,里面最上面有一个隐藏的指针vptr,指向一张表vtable #include <iostream> using namespace std; class A ...

  7. 面向对象程序设计-C++_课时21引用

    数据类型 & 别名=对象名; #include <iostream> using namespace std; int * f(int * x) { (*x)++; return ...

  8. 面向对象程序设计-C++_课时19const_课时20不可修改的

    error C2131: 表达式的计算结果不是常数 #include <iostream> using namespace std; void main() { ; int finalGr ...

  9. 面向对象程序设计-C++_课时18内联函数

    使用inline说明的函数称内联函数. 在C++中,除具有循环语句.switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数. #include <iostream> us ...

随机推荐

  1. JavaScript学习笔记(一)对象和属性

    对象属性的使用 JavaScript中的所有变量都可以当做对象使用,除了null和undefined. false.toString(); // 'false' [1, 2, 3].toString( ...

  2. 【Chromium中文文档】OS X 沙箱设计

    OS X 沙箱设计 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/OSX ...

  3. Hadoop4Win

    Hadoop4Win + Eclipse 运行 WordCount 程序 http://software.intel.com/zh-cn/blogs/2013/10/16/hadoop4win-ecl ...

  4. chrome提供的功能

    chrome://chrome-urls/ List of Chrome URLs chrome://accessibility chrome://appcache-internals chrome: ...

  5. 取PE文件的引入表和导出表

    直接上代码(这里列出C++和Delphi的代码),Delphi代码中包含导入及导出文件和函数列表,PE结构可参阅资料,很多很详细,需要注意的是,本例中是映射到内存,不是通过PE装载器装入的,所以对于节 ...

  6. Codeforces 286E

    #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> # ...

  7. aix创建lv 在lv上创建文件系统

    创建LV命令: mklv -y softlv -t jfs2 rootvg 15G 创建文件系统命令: crfs -v jfs2 -d/dev/softlv -m /soft -A yes 把soft ...

  8. Android Activity 启动模式详解

    最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了 ...

  9. iOS第三方开源库的吐槽和备忘(转)

    原文:http://www.cocoachina.com/industry/20140123/7746.html 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽.   目前比较活跃的社区 ...

  10. javascript高级知识点——临时作用域

    代码信息来自于http://ejohn.org/apps/learn/. 自执行,临时,函数 (function(){ var count = 0; })(); 这是一个简单的自执行匿名函数. 做一个 ...