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