在看谭浩强的C++,看到常对象成员的定义与初始化时,想着上手试试
于是自信的写出了以下代码
#include<iostream>
using namespace std;
class Student {
const int f;
public:
Student(int a = 10) :f(a) {} //书上说只能用这种参数列表来对常数据成员初始化
void re();
};
void Student::re()
{
cout << "f " << f;
}
int main()
{
Student s;
s.re();
return 0;
}
测试没毛病,但是出来了这个警告
在搜索一番后,找到了这篇文章
其中的解释是:
于是又尝试性的写了析构函数,看看析构函数是不是不会被执行
#include<iostream>
using namespace std;
class Student {
const int f;
public:
Student(int a = 10) :f(a) {}
void re();
~Student() {
cout << "aaaaa";
}
};
结果没毛病,析构函数也可以正常执行,但警告还是存在,而我依旧不明就里
遂作此文,求教大佬指导
若是我没注意到的细节或者知识点就在书上恳请大家指出来