c++子类在继承有参数的父类时为什么要往父类传参,传过去的参数有什么用?父类里谁接住这个参数了?

我只有6分了,全给出去了····

原本父类构造的时候就需要参数,子类继承的是父类,没有参数父类的构造函数无法执行。
传过去的参数用于父类的构造函数执行(通俗的说,一般用于初始化父类的成员变量等)。
参数是传给父类的构造函数的。换而言之,父类的成员变量的初始化时保存了这个变量;或者用于父类实例化时需要一次性使用的参数(比如,对话框尺寸、指定类中的枚举类型等)。追问

那我怎么调用父类创建的对象能看见我传过去的参数?为什么我调用一个没有参数的函数,让他输出父类的几个成员变量,他们还是原来的样子?

追答

你要是是在学习、研究写代码的话,在父类的构造函数里面再添加一句输出语句就好了。

比如:

class ParentClass
{
public:
    ParentClass();    // 无参的构造函数
    ParentClass(int a);    // 带参数的构造函数
    ...
protected:
    int m_a;
};

ParentClass::ParentClass(int a)
    : m_a(a)
{
    // 这里可以作为测试并打印你的调用参数
    cout << "a: " << a << "\nm_a: " << m_a <<endl;
}
...   

class ChildClass : public ParentClass
{
public:
    ChildClass();    // 这里随便你带不带参数了。没有参数的话,就直接给个默认是给父类或者调用父类无参数的构造函数。
    ...
}; 

ChildClass::ChildClass()
    : ParentClass(123)
{
}
最简单的例子,差不多就是这么个样式了.

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-20
构造是不会继承的,这句话的意思是:子类对象不能 (用点的方式) 访问父类的构造。但不代表子类实例化时父类构造不会运行。
一句话,父类不能只写有参构造(无参被屏蔽了),若一定只写有参构造,那就必须 子类要显式调用父类的有参构造。 否则就会报错。
因为,除了上述情况外,子类会无条件的调用父类无参构造,若父类没有无参构造,所以就会报错。
第2个回答  2014-08-11
这些都是你在控制,不是父类需要,是你这样设计了追问

我知道不给他参数他会用默认的构造一个,可我就是想知道我怎么能看见我传过去的参数···

追答

debug

c++子类在继承有参数的父类时为什么要往父类传参,传过去的参数有什么用...
原本父类构造的时候就需要参数,子类继承的是父类,没有参数父类的构造函数无法执行。传过去的参数用于父类的构造函数执行(通俗的说,一般用于初始化父类的成员变量等)。参数是传给父类的构造函数的。换而言之,父类的成员变量的初始化时保存了这个变量;或者用于父类实例化时需要一次性使用的参数(...

在c++中子类中重写父类的函数为什么还能调用父类的函数?
1.语法就是如此,标委会规定能就说明有它的用处。2.如果派生类是想在基类该方法基础上加点什么语句比如加一句打印输出,重写的时候难道把父类的方法体全部拷贝一遍后加一句打印?这完全不符合代码可重用性的原则。

C++中父类和子类的成员函数同名同参数同返回只是父类里面是虚函数,子类...
没有问题,这就是虚函数的作用,子类中可以override(重写)父类中的虚函数,给出子类自己的实现方法,子类中其实省略了父类函数声明前的virtual,子类中加上virtual也是没有问题的,可有可无。

C++怎么设计一个子类继承多个父类?
子类调用父类的同名函数:1.子类和父类返回值参数相同,函数名相同,有virtual关键字,则由对象的类型决定调用哪个函数。2.基类的构造函数按照继承时声明的先后顺序从前到后执行,最后执行自己的构造函数;析构函数则按照相反的顺序执行。3.子类和父类参数不同,函数名相同,有virtual关键字,则不存在多态...

C++中,孙类调用爷类函数,寻址的路径是否一定是经过父类的?
要掌握父类与子类的原理。当一个子类继承父类时,属性就相当于已经到了子类中,你可以直接使用了。

C++中子类继承父类,为何可以在子类和父类中命名相同名字的函数?
);( ( B * ) a )->Test();( ( C * ) a )->Test();a->BTest();a->CTest();delete a;} PS:如果是虚函数,而且派生类的函数签名与基类的签名一致,那么,基类的该同名函数指针已经被覆盖了,所以,就不可能再调用到基类的同签名函数了。非虚函数才可以使用上面的方面来调用。

C++,继承,父类中已经初始化的数据成员为什么被继承后,子类改变不了啊...
父类中并没有用传入的参数对变量赋值,所以你子类写什么都没用 Student(int n,string nam ,char s):num(1111),name("Father"),sex('m'){} 改成 Student(int n,string nam ,char s):num(n),name(nam),sex(s){}

C++中子类继承的父类的私有属性在子类中还是私有吗?
是私有的;四个;六个;最后的两句不知道你说什么 关于继承的东西百度上很容易找到,或者你也可以看书,你还可以通过自己动手试验一下。

c++中子类不能继承父类的一些函数这个不能继承修饰的到底是什么
不能说是不能继承。通常情况下,子类的构造函数和析构函数一般会包含父类的流程。默认情况下,构造对象时,先调用父类的构造函数,然后调用子类的构造函数。销毁时是相反的,先调用子类的析构函数,再调用父类的析构函数。赋值运算符在程序员不重写的情况下,编译器会默认生成一个,但是它做的事情是位...

c++继承和成员对象的问题
继承 在继承结构中,父类的内部细节对于子类是可见的。所以我们通常也可以说通过继承的代码复用是一种“白盒式代码复用”。优点:简单易用,使用语法关键字即可轻易实现。易于修改或扩展那些父类被子类复用的实现。缺点:编译阶段静态决定了层次结构,不能在运行期间进行改变。破坏了封装性,由于“白盒”...

相似回答