注册 登录
编程论坛 C++教室

C++初学者在学类的知识时遇到的问题

liangkenan 发布于 2011-12-23 22:52, 1573 次点击
# include<iostream>
# include<stdlib.h>
using namespace std;
class test
{
public:
    int a,b,c;
};
class testa:public test
{
public:
    int d;
testa(int a,int b,int c,int e):test(a,b,c)
{
    d=e;
}
};
void main()
{
    testa a(1,2,3,4);
    printf("%d",a.b);
    system("pause");
}
我用VS2010编译后在testa(int a,int b,int c,int e):test(a,b,c)这一行显视  没有重载函数接受 3 个参数
谁能够通俗的解释一下,一定要通俗,我可刚学~
14 回复
#2
rjsp2011-12-24 08:22
test没有构造函数,因为你写 test(a,b,c) 是不对的
#3
liangkenan2011-12-24 10:03
回复 2楼 rjsp
系统不是会自动生成构造函数吗?
#4
waterstar2011-12-24 10:51
编译器产生的默认构造函数是不带参数的,所以test(a,b,c)是错误的。
#5
匏樽邀月2011-12-26 23:12
testa(int a,int b,int c,int e):test(a,b,c)这一行显视  没有重载函数接受 3 个参数

子类是从test父类继承过来的,父类test没有参数,你现在继承参数就会出错。

你在父类就是test加上三个参数试试看,看行不行,丢久了不知道对不对
#6
我是菜鸟C2011-12-27 08:12
你的父累test中没有提供构造函数!
虽然说是有默认的构造函数,但是默认的构造函数时不带任何参数的,由系统自己去初始化!!
比如class A; 默认的构造函数就是A(),而不带任何的参数!!!
#7
wolfchen2012-01-03 12:58
  我才开始学呀
#8
lele52012-01-03 15:20
完全看不懂- -. 表示俺只是个新手,
#9
nemokina2012-01-04 21:24
大家共同学习进步,一步一步来,不着急的。
#10
warnstar2012-01-08 19:44
貌似我也犯过这错误
#11
bardon_20092012-01-17 22:52
我今天正好遇到这样的问题,我的理解是这样才对:
# include<iostream>
# include<stdlib.h>
using namespace std;
class test
{
public:
    int a,b,c;
};
class testa:public test
{
public:
    int d;
testa(int a,int b,int c,int e)//:test(a,b,c)
{
    d=e;
}
};
void main()
{
    testa a(1,2,3,4);
    printf("%d",a.b);
    system("pause");
}
因基类TEST是不带参数的,故继承时就不用在成员函数后加):test(a,b,c)了。
#12
a5764510592012-01-23 02:48
想找个老师不知道有没有 本人一点基础也没有.
#13
elvis_sun2012-01-31 10:58
带参数的构造函数必须显示定义
#14
zouwen16682012-01-31 12:57
本人新手上路,现在在看零起点学通C++,还可以看看那些教材!!
#15
zouwen16682012-01-31 12:58
回复 12楼 a576451059
我也新手,你现在在看那位大师的教材!
1