已采纳回答 / DoDream
是的,只有静态常量整型数据成员才可以在类中初始化。静态数据成员要在类外初始化常量数据成员和引用数据成员要在构造函数基/成员初始值设定项列表中初始化
2015-10-27
已采纳回答 / onemoo
直接在你的评论下回复有字数限制,我再发一条回答好了。你前一次的错误是缺少函数定义,根本不能编译。这次加上base的默认构造函数后,可以编译并运行了。但如果你只是加上base的默认构造函数,没有改别处的话,那这次的错误就在于:Big的拷贝构造函数还是没有做任何事! 且不说它并没有拷贝a1的内容,甚至也没有初始化自己的成员变量。 这种情况下,Big的成员变量会被默认初始化:也即是int v被默认初始化为随机值;base b就调用了自己的默认构造函数,这样b.k就是0(前一次就因为没有base的默认构造函数,所...
2015-10-24
最赞回答 / onemoo
在使用一个类时,只需要提供类定义即可,无需知道类实现,就可以进行编译。 一般类定义都是写在 .h 文件中的,所以include .h文件即可。类定义相当于定义了类可以进行的操作,代码只要知道了类定义就可以操作其成员。至于这些成员函数是怎么实现的,编译器在编译这个源文件时并不关心,所以无需知道类实现就可编译。当然要使整个程序能执行,还是得实现相应的成员函数,只不过那也许是写在其他cpp文件中的。这些写在其他cpp文件中类的实现会被链接机制找到,最终链接成可执行文件。为什么不能include .cpp: 在C...
2015-10-20
已采纳回答 / onemoo
系统没有帮你拷贝。拷贝构造函数原型就是“那样的函数名和形参”,这个函数才会被视为拷贝构造函数。 程序在需要进行拷贝构造的时候就会调用这个函数来构造类实例。大括号里就是这个函数的实现,写什么完全由你来决定,你打算怎样拷贝构造就怎样写好了。课程中只写了一句输出语句,是为了验证在哪些情况下调用拷贝构造函数。 例子中的这个函数确实没有拷贝任何成员变量。 用这个做示例似乎有点欠妥...
2015-10-16
已采纳回答 / AAnonymous
C++这里括号可以不写,因为调用的是无参构造函数,写不写都一样如果重载了构造函数,需要调用有参数的括号就是必须的了,需要传参数进去Java/C#等,即是是调用默认无参构造函数,括号也要写的
2015-10-16