用C++写了一个父类和一个子类,父类的构造函数需要3个参数,子类的构造函数也有三个构造函数.

子类的构造函数的三个参数是传递给父类的,.在控制台程序中可以正常调用,但是加载到MFC中后,子类的对象不接受参数了?这是为什么?

所谓继承,就是指子类“是一种”基类。所以子类一定会具备基类的所有特征。
子类无法访问基类的私有成员,所以必须调用父类的构造函数来初始化父类的成员。
对於子类来说,它不是“不会调用父类的构造函数”,而是“隠藏”了它。必要时候,你还是可以用特殊方法显式调用的。

为了达到你的目的,你有两个选择:
一,为基类提供一个怠工(dummy)构造函数,不作为。
二,声明为虚函数。

BTW,构造函数唯一的目的在於初始化对象。获取资源而不初始化,有悖RAII原则。所以基本上,第一种情况不大可能出现。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-08
你如何确定子类对象不接收参数了?是有消息弹出还是猜的?

想让别人回答问题,至少你应该多给点信息吧

...*p=new son;顺序是是:父类构造函数,子类构造,父类析构
因为你只定义了指向父类的指针,在主函数执行完后,只会销毁父类型指针p,p当然只会调用自己的析构函数了。如果你这样定义,son *p=new son;那么在销毁的时候,就会先调用son的析构函数,再调用father的析构函数。

在C++中一个类可以含有多个构造函数吗?
可以啊,重载的概念最初就是为了构造函数提出来的 一个类就算自己没定义构造函数,编译器也会自动提供两个构造函数:默认构造函数和复制构造函数 但是析构函数只能有一个

C++子类会无条件继承父类的构造函数么
在C++中,构造函数不会自动继承,只是如果子类没有写构造函数,那么系统会这个类自动添加一个默认构造函数,是一个空函数体,所以什么也没有做,接着就会调用父类的构造函数,所以你觉得是继承了父类的构造函数。子类和父类的构造函数的调用顺序:class B:public A B b1;那么构造函数的调用顺序是:A(...

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

C++ 类的问题 基类成员函数可以调用子类的成员函数吗?
不要在父类的构造函数中定义这个指针。因为父类的构造函数是在子类的构造函数之前,所以如果在父类构造函数中定义的这个指针,实际上指向的东西是未知的,有些编译器会提醒,但有些编译器可以编译通过。试试在abc里进行new然后输出,应该是可以的。忠告:不要在基类构造函数中使用任何本类的虚函数,因为...

子类继承父类的构造函数(方法)吗?
根据面向对象中关于继承这个概念子类继承父类所有的属性和方法。那么既然是所有的那么本人认为也应当也包括构造函数(方法)。我先举一个C++的例子:classParent{private:intp;public:Parent(void):p(0){}Parent(inti):p(i){}};classChild:publicParent{private:intc;public:Child(void):Parent(),c(0...

C++中为什么构造函数不能是虚函数,析构函数是虚函数
所谓虚函数就是多态情况下只执行一个,而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象,如果构造函数设为虚函数,那么当你在构造父类的构造函数时就不得不显示的调用构造,还有一个原因就是为了防错,试想如果你在子类中一不小心重写了个跟父类构造函数一样的函数,那么你的父类的构造...

C++问题 基类的成员函数 是否可以调用子类的成员函数
应该说不可以的 这个涉及到对象问题 一般来说对于父类来说他有多少方法子类都能用,但是父类没有的子类有的父类不能用 你说把子类设置成普通类是默认的强制类型转换吧 C++在有些方面限制的比较松 以前学过点 忘得差不多了

C++ 父类成员函数 可以调用子类的成员函数吗
如果在父类的非默认构造函数初始化 m_pSon=new Cson();在默认构造函数初始化:m_pSon=0;那就 可以正常调用了。如果在父类默认构造函数这样初始化:m_pSon=new Cson();按理来说是应该编译错误,就算编译不报错也应该运行出错,因为会进入一个死循环,不停的申请内存,直到系统崩溃,如果楼主是在...

C++类的问题,构造函数和析构函数
C(k) ---> 调用类 C的构造函数C(int k){cout<<"C ";} --->输出字符 C a(i) --->a是A类的对象引用,调用类 A 的构造函数A(int i){cout<<"A ";} --->输出字符 A b(j) --->b是B类的对象引用,调用类 B的构造函数B(int j){cout<<"B ";} --->输出字符...

相似回答