问题:
是否可以类里面定义cons成员变量?如何在类里面初始化const变量?
class Test
{
const int m_i;
public:
Test() : m_i(10)
{
// m_i = 10; // error只读变量不能出现赋值符合左边
}
int getI()
{
return m_i;
}
};
#include <stdio.h>
class Value
{
private:
int mi;
public:
Value(int i)
{
printf("i = %d\n", i);
mi = i;
}
int getI()
{
return mi;
}
};
class Test
{
private:
Value m2;
Value m3;
Value m1;
public:
Test() : m1(1), m2(2), m3(3)
{
printf("Test::Test()\n");
}
};
int main()
{
Test t;
return 0;
}
// 输出结果为2 3 1
// 初始化列表位先于构造函数的函数体执行
//要初始化成员,必需使用初始化列表
仅仅是只读成员变量(意思是可以改变的)
#include <stdio.h>
class Value
{
private:
int mi;
public:
Value(int i)
{
printf("i = %d\n", i);
mi = i;
}
int getI()
{
return mi;
}
};
class Test
{
private:
const int m_i;
Value m2;
Value m3;
Value m1;
public:
Test() : m1(1), m2(2), m3(3), m_i(10)
{
printf("Test::Test()\n");
}
int setI(int a)
{
int* p = const_cast<int*>(&ci);
*p = v;
// return const_cast<int&>(m_i) = a;
}
};
int main()
{
Test t;
printf("t.ci = %d\n", t.getCI());
t.setCI(10);
printf("t.ci = %d\n", t.getCI());
return 0;
}
int main()
{
int i = 0; // 初始化
i = 10; // 赋值
}
注:本笔记是参考狄泰软件学院C++教程做的课堂笔记