首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中struct和class构造函数函数有关问题

2013-09-25 
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看吧。

热点排行