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

这个式子看不明白,请高手帮忙

wujingqian 发布于 2008-03-18 22:50, 549 次点击
#include<iostream.h>
class B
{
  public:
       B() {};
       B(int i,int j);
       void printb();
  private:
       int a,b;
};
class A
{
  public:
       A() {};
       A(int i,int j);
       void printfa();
  private:
       B c;
};
A::A(int i,int j):c(i,j)
{};
void A::printa()
{
 c.printfb();
}
B::B(int i,int j)
{
a=i;b=j;
}
void B::printb()
{
cout<<"a=" <<a<< ",b="<<b<<endl;
}
void main()
{
A m(7,8);
m.printfa();
}
答案:a=7,b=8
A::A(int i,int j):c(i,j)我刚学C++,这个式子看不明白,请高手帮忙。
5 回复
#2
sunkaidong2008-03-18 23:17
给c初始化...

[[it] 本帖最后由 sunkaidong 于 2008-3-19 12:32 编辑 [/it]]
#3
baoyibao2008-03-19 12:29
一般在类的构造函数后面可以添加初始化语句(用:),包括类的构造函数或类的成员变量,如:
A::A(int i, int j) : c(i, j) { }
其中c(i, j)表示调用类B的B(int i,int j)构造函数初始化类A的成员对象c(类B)
又如:
B::B(int i,int j){ a=i;b=j;}
可以写为:
B::B(int i,int j) : a(i), b(j) { }
#4
wujingqian2008-03-19 13:11
原来如此,谢谢大家帮忙!
#5
VanHorn2008-03-19 13:17
这样的初始化的手法也可以用于初始化一个类的静态成员变量。
#6
sunkaidong2008-03-19 13:19
楼上说的没太在意过..一般都是把静态变量用之前单独初始化的...
1