求助C++! 不知道问题出现在哪了

zhangmengjie0331 2014-10-22 11:15:22
#include <iostream>
#include <string>
using namespace std;
class father
{
public:
father(){cout<<"构造基类构造函数\n";}
father(string a,int b){name=a;tall=b;cout<<"构造两个参数基类构造函数\n";}
~father(){cout<<"析构基类构造函数\n";}
void print1(){;cout<<"姓名"<<name<<"身高"<<tall<<endl;}

protected:
private:
string name;
int tall;
};
class son:public father
{
public:
son(int a,string b,int c):mak("mak",180){weight=a;cout<<"构造子类构造函数\n";}
~son(){cout<<"析构子类构造函数\n";}
void print2(){print1();cout<<"体重"<<weight<<endl;}
protected:
private:
father mak;
int weight;
};

int main()
{

son mike(80,"mike",180);
mike.print2();
return 0 ;
}
上面的程序,为什么把son,类的mak 改成father就行!否则的话出来的是乱码?
还有就是怎么会调用不带参数的构造函数呢?
...全文
211 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangmengjie0331 2014-11-03
  • 打赏
  • 举报
回复
son(int a,string b,int c):mak("mak",180){weight=a;cout<<"构造子类构造函数\n";} 这句话不是对父类对象 mak的tall赋值了吗?成员name不就是mak?
gzliudan 2014-11-03
  • 打赏
  • 举报
回复
son(int a,string b,int c):mak("mak",180) 这句话里的mak是成员father mak; 如果要对父类的成员赋值,就要写 son(int a,string b,int c):father("mak",180)
gzliudan 2014-10-22
  • 打赏
  • 举报
回复
原因就是类son继承了类father,又有个成员mak是类father。继承了父类fasther,就会调用缺省构造函数。另外print2调用父类的print1,但父类的成员name是空的,tall没有赋值。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧