开发者社区> 问答> 正文

c++类的组合与继承?报错

// Practice17.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class base{
private:
 int i;
public:
 base(int a)
 {
  i = a;
 }
 void show()
 {
  cout << i << endl;
 }
};
class derived :public base{
private:
 base d;
public:
 derived(int i) :base(i)
 {
  d(i);//为什么会报错并不存在默认构造函数
 }
 void show(){
  base::show();}
};

int _tmain(int argc, _TCHAR* argv[])
{
 derived obj(100);
 obj.show();
 system("pause");
 return 0;
}

展开
收起
爱吃鱼的程序员 2020-06-07 16:32:23 503 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>因为base这个类没有默认构造函数,所以这里要用成员初始化列表句法来做,像下面这样</p> 
    
    public:
    
      derived(int i): base(i), d(i)
      {
        return;//为什么会报错并不存在默认构造函数
      }

     

                            是不是析构函数的问题
                        
    
                            base 是有默认构造函数的呀?
                        
    
                        <p><img height="153" src="https://static.oschina.net/uploads/space/2018/0520/212906_iGpC_3719063.png" width="316">这里不是默认构造函数吗?</p>
    
                    
    
                            您能说的再明白些吗?base()是和base(Int)有区别,但我还不是很明白,谢谢回复,
                        
    
                            base()和base(i)是不一样的。
    
    2020-06-07 16:32:41
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载