对派生类的初始化

对派生类的初始化,从派生类的构造函数开始用初始式进行初始化。

初始式的格式:

派生类的构造函数(参数表):基类构造函数(参数表),对象成员(参数表)...普通成员(初始值)。

初始式的存在意义是,1.可以给带参数的类成员变量赋初值。2.效率问题,(水平不够暂且搁置)

class parent_class{

int data1,data2;

public:

parent_class(int p1 ,int p2){data1=p1;data2=p2;}

int inc1(){

return ++data1;

}

int inc2(){

return ++data2;

}

void display(){

cout<<"data1="<<data1<<",data2="<<data2<<endl;

}

};

class derived_class:private parent_class{

int data3;

parent_class data4;//对象成员

public:

derived_class(int p1,int p2,int p3,int p4,int p5):

        parent_class(p1,p2),data4(p3,p4),data3(p5){//对派生类的初始化过程

// data3=p5;

}

int inc1(){ return parent_class::inc1();}

int inc3(){ return ++data3;}

void display(){

parent_class::display();

data4.display();

cout<<"data3="<<data3<<endl;

}

};

int main(){

derived_class d1(17,18,1,2,-5);

d1.inc1();

d1.display();

return 0;

}

时间: 2024-11-02 07:46:09

对派生类的初始化的相关文章

【C++】派生类对象初始化基类的引用

//派生类对象初始化基类的引用 //引用是别名,但这个别名只能包含派生类对象中的由基类继承来的隐藏对象 #include <iostream> using namespace std; class B { public: B() { cout<<"B"<<endl; } void fun() { cout<<"B::fun()"<<endl; } private: int x; }; class D : p

关于C#中派生类调用基类构造函数的理解

(1)当基类中没有自己编写的构造函数时,派生类默认条用基类的构造函数 (2)当基类中有自己编写的构造函数时,要在基类中添加无参的构造函数 Java代码   public class MyBaseClass { public MyBaseClass() { } public MyBaseClass(int i) { Console.WriteLine("我是基类带一个参数的构造函数"); } } public class MyDerivedClass : MyBaseClass { pu

阿里笔试题-派生类构造函数 创建顺序

派生类 与基类的关系: (1)创建构造函数的顺序 :基类构造函数(注意此处基类的成员不能初始化) ==>派生类成员初始化 ==>派生类构造函数 (2)派生类的构造函数 中 基类的构造函数默认在第一条,如果不写super(),则默认在第一条,注意位置不能颠倒 (3)派生类可以继承全部的基类的构造函数 阿里笔试题 举个栗子: 1 package com.test; 2 3 public class DispatchTest { 4 5 public static void main(String[

C++:基类与派生类对象之间的赋值兼容关系

4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量.这种不同类型之间的自动转换,称为赋值兼容.在基类和派生类对象之间也存在有赋值兼容关系,基类和派生类对象之间的赋值兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来代替.因为,通过公有继承,除了构造函数和析构函数外,派生类保留了基类其他的所有的成员.那么,派生类就具有基类的全部功能,凡

java类的初始化顺序

java类的初始化顺序 (2008-10-21 13:30:15) 转载▼ 标签: java 初始化 继承初始化 it 分类: Java 对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: public class InitialOrderTest { // 静态变量 public static String staticField = "静态变量";

C++构造函数 &amp; 拷贝构造函数 &amp; 派生类的构造函数 &amp; 虚继承的构造函数

构造函数 ,是一种特殊的方法 .主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中 .特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载.(摘自百度百科构造函数). 一.最基本的构造函数 1 class Base 2 { 3 public: 4 Base(int var) : m_Var(var) 5 { 6 } 7 private: 8 int m_Var; 9 }; 以上构造函数的执行过程:

C++的继承操作---基类指针访问派生类问题---基类成员恢复访问属性问题

#include "stdafx.h" #include <iostream> #include <algorithm> using namespace std; class Base { public: int num; virtual void func() { cout<<"Do something in Base"<<endl; } }; class Derived:private Base { public:

(继承及其访问限定符)&&(派生类及其默认成员函数)&&(赋值兼容规则)

◆继承: ★继承概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能.这样产生新的类,称派生类.继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程. 继承定义格式 ★继承关系&访问限定符 class Base { public: Base() { cout<<"B()" <<endl; } ~Base () { cout<<"~

c++中派生类的构造函数

Son(char *n, int *b, int g, char *add, int *gir, double s) : Father(n, b, g) 派生类构造函数名(总参数列表):基类构造函数名(参数列表) {派生类中新增数据成员初始化语句} 冒号前面的部分是派生类构造函数的主干,基类的构造函数想同,但它的总参数列表中包括基类构造函数所需要的参数和对派生类新增的数据成员初始化所需参数 冒号后面的部分是要调用的基类构造函数及其参数