已采纳回答 / 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
已采纳回答 / onemoo
这个没错。p 是指向 TV类型 的指针,通过指针来访问所指变量的成员应该用 -> 运算符。 直接通过变量访问其元素才是用 .(点) 运算符。也就是 p->type 相当于 (*p).type
2015-10-15
已采纳回答 / onemoo
难得看到一个用codeblocks的。这个类定义没什么问题,报的这个错误不是代码中的。 看起来应该是链接时找不到链接库,这一般是因为建立工程不对。你建立工程时选的是console application(控制台应用程序)吗?
2015-10-14
已采纳回答 / onemoo
这是个函数,函数体后的尾大括号就标志着这个函数的结束,后面无需再加上分号。一般分号标志着语句的结束。所以你写上分号的话,等于是两个语句:一个完整的函数 + 一个只有一个分号的空语句
2015-10-08