7.6-8.3读书笔记

7.6类的静态成员

  • 静态成员函数不与任何对象绑定在一起,它们不包含this指针,静态成员函数不能声明成const
  • 通常,类的静态成员不应该在类的内部初始化.我们可以为静态成员提供const整数类型的类内初始值,不过要求静态成员必须是字面值常量类型的constexpr,初始数值必须是常量表达式,因为这些成员本身就是常量表示;
class Example {
public:
	static double rate = 6.5;
	static const int vecSize = 20;
	static vector<double> vec(vecSize);
};

//rate 应该是一个常量表达式。
//类内只能初始化整型类型的静态常量,所以不能在类内初始化vec。修改后如下:

什么是类的静态成员?它有何优点?静态成员与普通成员有何区别?

与类本身相关,而不是与类的各个对象相关的成员是静态成员。静态成员能用于某些场景,而普通成员不能。

8.1 IO类

编写函数,接受一个istream&参数,返回值类型也是istream&。此函数须从给定流中读取数据,直至遇到文件结束标识时停止。它将读取的数据打印在标准输出上。完成这些操作后,在返回流之前,对流进行复位,使其处于有效状态。

std::istream& func(std::istream &is)
{
std::string buf;
while (is >> buf)
std::cout << buf << std::endl;
is.clear();
return is;
}

什么情况下,下面的while循环会终止?

while (cin >> i) /* … */
如果 badbit、failbit、eofbit 的任一个被置位,那么检测流状态的条件会失败。

编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。

void ReadFileToVec(const string& fileName, vector& vec)
{
ifstream ifs(fileName);
if (ifs)
{
string buf;
while (getline(ifs, buf))
vec.push_back(buf);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值