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

第一次发现,求解释,该如何解决

2012-03-15 
第一次发现,求解释C/C++ code#include stdafx.h#include iostreamusing namespace stdclass M //C++1

第一次发现,求解释

C/C++ code
#include "stdafx.h"#include <iostream>using namespace std;class M //C++11 delegating constructors{    int x, y;    char *p;public:    M()    {        M(10);    };    M(int v) : x(v), y(0),  p(new char [0])  {    } //#1 target    };int main(int argc, char* argv[]){    M m();   // M m    printf("Hello World!\n");    return 0;}


M m();是个什么情况,编译通过了,确实无效代码
写成 int m();也一样...写错了,但是编译器怎么解释的,也没有报错...VC6编译的

[解决办法]
int m(3);就没问题了
[解决办法]
warning C4930: “M m(void)”: 未调用原型函数(是否是有意用变量定义的?)
C/C++ code
#include <iostream>#include <string>using namespace std;class M //C++11 delegating constructors{    int x, y;    char *p;public:    M()    {        printf("默认构造函数\n");        M(10);//还有这个地方原则上是不会有任何作用的 需要自定义=运算符然后赋值    };    M( const M &m )    {        printf("拷贝构造函数\n");        x = m.x;        y = m.y;        p = new char[strlen(m.p)+1];        strcpy(p,m.p);    }    M(int v) : x(v), y(0),  p(new char [1])      {        printf("带参数构造函数\n");    } //#1 target    int Getx()const    {        return x;    }    };int main(int argc, char* argv[]){    M m();   // M m    printf("Hello World!\n");    M n;    printf("%d\n",n.Getx());    return 0;} 

热点排行