c++组合类的构造函数

来源:百度知道 编辑:UC知道 时间:2024/05/11 04:32:47
例如:
student(char a[20],char b[10],char c[20],subject d):sub(d)
{
strcpy(name,a);
strcpy(no,b);
strcpy(major,c);
}
subject是一个类
sub(d)是代表调用了subject的拷贝构造函数?还是代表sub=d的这种表示方法呢?

是拷贝构造,不是operator=

sunnzy的说法不太对。 虽然这两种写法可能结果是一样的,而且也“应该”是一样的, 但实际上是取决与实现, 因为调用的是不同的函数, 完全有可能做了截然不同的事情。

对于无默认构造函数的类subject,只能用初始化列表的形式初始化。
上面的代码就是如此。

前者,调用拷贝构造函数而非赋值运算符

sub(d)是在类student中在参数初始化列表初始化的,估计sub是student的子对象或基类,sub(d)作用和在花括号里用sub=d是一样的