菜鸟再问C 问题,构造函数无参数会出错?

[复制链接]
查看11 | 回复1 | 2011-4-11 01:26:04 | 显示全部楼层 |阅读模式
#include \"stdafx.h\"
#include \"iostream\"
using namespace std;


enum CPU_Rank{P1 = 1,P2,P3,P4,P5,P6,P7};

class CPU{
public:
CPU(CPU_Rank r, int f, float v);
~CPU(){cout\"析构了CPU\"endl;}

private:
CPU_Rank rank;
int frequency;
float voltage;



CPU_Rank get_rank() {return rank;}
int get_frequency() {return frequency;}
float get_voltage() {return voltage;}

void set_rank(CPU_Rank r){rank = r;}
void set_frequency(int f){frequency = f;}
void set_voltage(float v){voltage = v;}



public:
void Run(){cout\"CPU开始运行\"endl;}
void Stop(){cout\"CPU停止运行\"endl;}
};


CPU::CPU(CPU_Rank r,int f, float v)
{
rank = r;
frequency = f;
voltage = v;
cout\"构造了CPU\"endl;
}



class RAM{

public:
RAM(){cout\"构造了RAM\"endl;}
~RAM()
{cout\"析构了RAM\"endl;}

void Run() {cout\"RAM开始运行!\"endl; }

void Stop() {cout\"RAM停止运行!\"endl; }

};


class CDROM{
public:
CDROM(){cout\"构造了CDROM\"endl;}

~CDROM()
{cout\"析构了CDROM\"endl;}

void Run() {cout\"CDROM开始运行!\"endl; }

void Stop() {cout\"CDROM停止运行!\"endl; }

};


class computer
{
private:
CPU cpu;
RAM ram;
CDROM cdrom;
public:
computer(){}
~computer()
{cout\"析构了电脑\"endl;}



public:
void Run(){
cout\"电脑开机\"endl;
cpu.Run();
ram.Run();
cdrom.Run();
}


void Stop(){
cdrom.Stop();
ram.Stop();
cpu.Stop();
cout\"电脑关机\"endl;
}




};









int main(int argc, char* argv[])
{
printf(\"Hello World!\\n\");

CPU a(P5,4000,220);
a.Run();
a.Stop();


computer c;
c.Run();
c.Stop();
return 0;
}
回复

使用道具 举报

千问 | 2011-4-11 01:26:04 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">就是没有参数,要么参数都有初始值,比如:
class MyClass
{
public:

MyClass( int a, int ch ): m_a(a), m_c(ch){}

private:

int m_a;

char m_c;
};
这样就会提示出错。
构造函数要写成这样
MyClass( ): m_a(1), m_c(\' \'){} //无参数
或这样
MyClass( int a=1, int ch=\' \' ): m_a(a), m_c(ch){}//有初始值

所以,“构造函数就必须定义默认构造函数”,是说明自己定义构造函数时要定义像上面 那样的构造函数,如果你定义了其他类型的构造函数,你必须还得定义上面两种形式(中的一种)的构造函数,否则会提示出错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行