2 langdon1996 Langdon1996 于 2016.05.06 00:11 提问

C++面向对象入门~构造函数编译不通过

一个简单的面向对象入门,在codeblock上,构造函数的参数编译失败


#include <iostream>
using namespace std;
class Building
{
protected:
    string name;
    int floorNum,roomAmount;
    float wholeArea;
public:
    Building(string n,int f,int r,float w)
    {
        this->name=n;
        this->floorNum=f;
        this->roomAmount=r;
        this->wholeArea=w;
    }
    void display()
    {
        cout<<"建筑物名称:"<<name<<endl;
        cout<<"层数:"<<floorNum<<endl;
        cout<<"教室(房间)数"<<roomAmount<<endl;
        cout<<"总面积"<<wholeArea<<endl;
    }
};
class TeachBuilding:protected Building
{
protected:
    string func;
public:
    TeachBuilding(string n,int f,int r,float w,string func):Building(string n,int f,int r,float w)
    {
        this->func=func;
    }
    void display()
    {
        Building::display();
        cout<<"建筑物功能:"<<func<<endl;
    }
};
class DormBuilding :public Building
{
protected:
    int people;
public:
    DormBuilding(string n,int f,int r,float w,int people):Building(string n,int f,int r,float w)
    {
        this->people=people;
    }
    void display()
    {
        Building::display();
        cout<<"可容纳人数:"<<people<<endl;
    }
};
int main()
{
    TeachBuilding TB("5号楼",5,40,4000,"机房");
    TB.display();
    cout<<endl;
    DormBuilding DB("宿舍C3",8,140,1352,523);
    DB.display();
    return 0;

}

6个回答

caozhy
caozhy   Ds   Rxr 2016.05.06 01:02
已采纳
 #include <iostream>
using namespace std;
class Building
{
protected:
    string name;
    int floorNum,roomAmount;
    float wholeArea;
public:
    Building(string n,int f,int r,float w)
    {
        this->name=n;
        this->floorNum=f;
        this->roomAmount=r;
        this->wholeArea=w;
    }
    void display()
    {
        cout<<"建筑物名称:"<<name<<endl;
        cout<<"层数:"<<floorNum<<endl;
        cout<<"教室(房间)数"<<roomAmount<<endl;
        cout<<"总面积"<<wholeArea<<endl;
    }
};
class TeachBuilding:protected Building
{
protected:
    string func;
public:
    TeachBuilding(string n,int f,int r,float w,string func):Building(n,f,r,w) //修改
    {
        this->func=func;
    }
    void display()
    {
        Building::display();
        cout<<"建筑物功能:"<<func<<endl;
    }
};
class DormBuilding :public Building
{
protected:
    int people;
public:
    DormBuilding(string n,int f,int r,float w,int people):Building(n,f,r,w) //修改
    {
        this->people=people;
    }
    void display()
    {
        Building::display();
        cout<<"可容纳人数:"<<people<<endl;
    }
};
int main()
{
    TeachBuilding TB("5号楼",5,40,4000,"机房");
    TB.display();
    cout<<endl;
    DormBuilding DB("宿舍C3",8,140,1352,523);
    DB.display();
    return 0;

}
caozhy
caozhy   Ds   Rxr 2016.05.06 01:02

建筑物名称:5号楼
层数:5
教室(房间)数40
总面积4000
建筑物功能:机房

建筑物名称:宿舍C3
层数:8
教室(房间)数140
总面积1352
可容纳人数:523

qq_26904543
qq_26904543   2016.05.06 08:14

building类中的缺少初始构造函数

就是你应该有无参数传入的构造函数

ZGZ1002
ZGZ1002   2016.05.06 12:38

你的程序中有:string name;所以你要加上头文件#include
其次,你的这句代码TeachBuilding(string n,int f,int r,float w,string func):Building(n,f,r,w)。有些问题

qiang_zi_
qiang_zi_   2016.05.06 00:18

没有错误提示吗?错误提前????

NK_test
NK_test   Rxr 2016.05.06 00:21

string头文件都没加

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
面向对象中的构造函数和析构函数
面向对象:认识或了解世间万物的方式,采用类别的比较。 面向对象包含“类”和“对象”。 “类”分为——》1.抽象:包括【1.外观--》属性 2.做的事--》行为】   |   |  2.实例化 构造函数: 构造函数方法又称为构造函数,是对象被创建时自动调用的方法,用来完成类初始化的工作。 publicc function_construct(){} 特点: 1
不通过构造函数也能创建对象吗?
答案:yes 解析:Java创建对象的几种方式(重要): (1) 用new语句创建对象,这是最常见的创建对象的方法。 (2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。 (3) 调用对象的clone()方法。 (4) 运用反序列化手段,调用java.io.ObjectInputSt...
不用构造器也能创建对象
不用构造器也能创建对象
C#面向对象编程:构造函数
构造函数的定义: 构造函数,在实例化对象时,编译器会自动调用的用于初始化对象的数据成员的函数; 主要作用:用于在创建对象时,对对象的数据成员(非静态,好像有点多余,静态的数据成员属于类,而非对象)进行初始化; 构造函数的格式: 构造函数也是函数,不过它是一种特殊格式的函数;构造函数的名称和类名相同,没有返回类型(注意和返回void类型的区别),不需要返回值; 构造函数
PHP的面向对象(三)构造函数和析构函数
构造函数   有构造函数的类会在每次创建新对象时调用此函数,所以可以在此函数内做一些使用对象之前的初始化。   如果子类中定义了构造函数,就不会再调用父类的构造函数,可以用parent::__construct()来调用父类的构造函数。      若子类没有构造函数,会自动使用父类的构造函数(父类的构造函数为public的情况下)。      若父类构造函数为priva
什么是js的面向对象,以及它的特点和怎样写构造函数
首先呢,我们先来了解一下,什么是对象。可能有学过编程的知道这个概念。简单的说就是对象的概念是:我们不需要它的内部构造,只要会用即可。 就比如,举个很简单的例子。手机,手机是和我们现在有着密切关系的东西,几乎每个人都在使用,但是你知道手机是怎么做出来的吗?手机又为什么可以打电话呢?至于这些,我们可以知道,也可以不知道。但是我们只要会用就行了对吧。 这是日常生活中的例子。再举个例子比如在js中我们
JS面向对象---构造函数之间的继承(阮一峰网络日志学习笔记)
主题:对象之间的继承,可以分为:构造函数之间的继承和非构造函数之间的继承。今天学习总结的是构造函数之间的继承。继承方式总共有五种:(只记述前四种)    第一种:将父对象(构造函数即是一个对象)直接绑定在子对象中。    示例代码:    function Animal() {        this.species = &quot;动物&quot;;    }    function Cat(name, color...
C语言实现简单的面向对象例子
对于想做C语言大型项目开发同学,结合上篇C语言模块化编程,会有很大帮助。 实现方法:回调函数,结构体里保存函数指针,具体看下面的代码:#include <stdio.h> //几个用于测试的函数 int max(int a, int b) { return a>b?a:b; }int min(int a, int b) { return a<b?a:b; } //结构体 s
04:面向对象——构造函数
面向对象思想 一个类中,只含有属性和方法; 1:一种思考方式 2:复杂问题简单化,从执行者变成指挥者 3:封装 4:找对象,建立对象,使用对象,维护对象的关系 5:类与对象的关系 现实生活中的对象:张三,李四 想要描述:提取对象公共性内容,对具体的抽象 描述时:寻找现实中对象的共性 6:类就是:对现实生活中实物的描述 对象 ...
java面向对象构造函数的学习
特点:     1、函数名与类名相同。     2、不用定义返回值类型。     3、没有具体的返回值。          P.S.         在构造函数前面加上返回值就只是一般函数了。     作用:给对象进行初始化。     示例: class Person{ private String name ; private int a