回 帖 发 新 帖 刷新版面

主题:关于C++构造函数知识的一个小问题

class MyClass
{
    
public:
    int mem1;
    const int mem2;
    const int &mem3;
    MyClass mem4;    //这一句有什么问题吗?编译的时候报错,为什么?
public:
/*    MyClass()
    {
        mem2 = 2;
        mem3 = mem1;
    }*/  //mem2,mem3(引用成员也必须在成员初始化参数表中初始化)
        //是常量必须在成员初始化参数表中初始化

/*    MyClass(int c):mem2(c), mem3(3), mem4(1)
    {};*/    //mem3是引用成员变量,必须在成员初始化参数表中初始化

    MyClass(int c, int &r, int m):mem2(c), mem3(r), mem4(m)
    {};//正确,mem4使用默认构造函数

    MyClass(int c, int &r, int m1, int m2):mem1(0),mem2(c),mem3(r), mem4(m1,m2)
    {};        //正确
};

#include<iostream.h>
void main()
{
    int r = 1;
    MyClass m1(0, r, 2);
    cout << m1.mem1 << " " << m1.mem2 << " " << m1.mem3 << endl;
}

回复列表 (共8个回复)

沙发

//这一句有什么问题吗?编译的时候报错,为什么?
包含自身呀,那sizeof(MyClass)岂不是无限大
对于 n = n + 1
假设 n = 1,那么 n=n+1=1+1=2
既然 n = 2,那么 n=n+1=2+1=3
既然 n = 3, 那么 n=n+1=3+1=4
……
最终 n 必须是无限大


#include<iostream.h> // C++标准中早就废除了这个文件
void main() // C/C++标准中从来没有void main,只有int main

板凳

1楼给的解释很详细了!!

3 楼

首先对于你上面的回答表示赞同,谢谢

#include<iostream.h> // C++标准中早就废除了这个文件
void main() // C/C++标准中从来没有void main,只有int main
这两句我就不懂了,那现在输入输出用的什么头文件呢?  我刚学的C++  因为是在图书馆借的一本老书, int main() {return 0;} 这样用吗现在?

4 楼

标准C规定的main是如下两种形式之一
int main()
int main(int argc,char* argv[])
默认返回0
新标准的C++中的iostream用法是
#include <iostream>
但是注意有命名空间的问题,程序不大的话可以直接跟一句using namespace std;不然cout cin endl都会跟你说为定义的符号

5 楼

深圳市华信群英科技有限公司与知名通信软件公司正式签订定向输送人才的合作协议
针对想进入IT软件行业的有志人士提供专业的企业内训
实训课程采用“2+3”分段教学模式,分为2个月理论强化和3个月项目实训两个阶段
实训前就签订就业安置协议,岗前实训后入职
不仅学费优惠而且是企业定向培训定向招聘,百分百保证就业
有意向请登录www.szctt.com,或加QQ:1179397962做详细咨询

6 楼


#include<iostream>  我用的VC 6.0 这样的头文件打不开???

7 楼

用#include<iostream>之后要写using namespace std;

8 楼

你在类myclass中定义了一个该类的对象,但此时,myclass类还没定义完整,因此会报错。   解决办法:在定义类前先声明一下就可以了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册