c++

来源:互联网 发布:多表查询的sql语句 编辑:程序博客网 时间:2024/06/05 10:49

至于为什么成员变量中要用到引用,这个主要是该成员变量是另一个类的对象,但是该类却禁止copy【怎么禁止拷贝构造函数?其实很简单,声明为Private即可】。

    扯远了。。。

    下面是我对于成员变量初始化的总结,在g++下测试过:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <iostream>
 
using namespace std;
 
class TestVar{
public:
    TestVar():b(2), e(a){
        a = 1;   
        cout<<a<<" "<<b<<" "<<c<<" "<<d<<" "<<e<<" "<<f<<" "<<h<<endl;
    }
private:
    //int a = 0;//error: ISO C++ forbids initialization of member ‘a’
    int a;//初始化可以在构造函数里面,也可以在初始化列表
//只有一个warning,std-c++11可以gun11+


    //const int b = 0;//error: ISO C++ forbids initialization of member ‘a’
    const int b;//常量的正确初始化应该使用[构造函数的初始化列表]
    int &e;//引用类型变量,和常量一样只能在[构造函数的初始化列表],参数是同类型变量
     
    //static int c = 0;//ISO C++ forbids in-class initialization of non-const static member ‘c’
    static int c;
    static const int d = 4;//注意只有整型数据才行[int.., char]
    static const char f = 'a';//可以,char也是整型数据
    static const double h = 9.9;//书上说不行,但是在g++下是可以的,根编译器有关吧
     
};
 
int TestVar::c = 3;//静态成员的正确初始化方法
 
 
int main(){
    TestVar t;
    return 0;
}
0 0
原创粉丝点击