C++中struct和class构造函数函数问题
#include<iostream>
using namespace std;
/* C++权限的差别 */
struct Fun{
Fun(){}
Fun(int){}
void p(){}
};
int main()
{
Fun f(10);
f.p();
Fun f2();
f2.p();
return 0;
}
我很奇怪为什么f2.p()会编译错误,说是找不到这个函数,但是f.p();却可以执行? struct class c++
[解决办法]
Fun f2(); 这句错了
编译器不能区分是构造还是声明一个函数。
以下三种正确的形式:
Fun f2;
Fun f2 = Fun();
Fun* p = new Fun();
[解决办法]
++
[解决办法]
如今的struct和class没啥两样,只是struct默认是public,class默认是private.
#include<iostream>
using namespace std;
/* C++权限的差别 */
struct Fun{
Fun(){}
Fun(int){}
void p(){}
};
int main()
{
Fun f(10);
f.p();
Fun f2; //这样会调用默认构造函数,不要加()。否则分不清f2是函数还是对象
f2.p();
return 0;
}
[解决办法]
Fun f2(); 这句错了
编译器不能区分是构造还是声明一个函数。
以下三种正确的形式:
Fun f2;
Fun f2 = Fun();
Fun* p = new Fun();
但是不管怎么修改,都无法使得f2调用p函数,比如说我改为 Fun *f2 = new Fun(); f2还是无法调用p的,我在网上查找的时候,很多地方都说struct不支持无参构造函数,这是一个硬性规定,是这样吗?
没有这回事,找本C++Primer看吧。