C++中struct和class构造函数函数有关问题
C++中struct和class构造函数函数问题#includeiostreamusing namespace std/* C++权限的差别*/struct Fu
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();
[解决办法] 引用: Fun f2(); 这句错了 编译器不能区分是构造还是声明一个函数。 以下三种正确的形式: Fun f2; Fun f2 = Fun(); Fun* p = new Fun(); ++
[解决办法] 引用: Quote: 引用: Fun f2(); 这句错了 编译器不能区分是构造还是声明一个函数。 以下三种正确的形式: Fun f2; Fun f2 = Fun(); Fun* p = new Fun(); 但是不管怎么修改,都无法使得f2调用p函数,比如说我改为 Fun *f2 = new Fun(); f2还是无法调用p的,我在网上查找的时候,很多地方都说struct不支持无参构造函数,这是一个硬性规定,是这样吗?如今的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; }
[解决办法] 引用: Quote: 引用: Fun f2(); 这句错了 编译器不能区分是构造还是声明一个函数。 以下三种正确的形式: Fun f2; Fun f2 = Fun(); Fun* p = new Fun(); 但是不管怎么修改,都无法使得f2调用p函数,比如说我改为 Fun *f2 = new Fun(); f2还是无法调用p的,我在网上查找的时候,很多地方都说struct不支持无参构造函数,这是一个硬性规定,是这样吗?没有这回事,找本C++Primer看吧。