我正在读一本关于C++的书,它说如果我使用>>运算符,它会返回运算符左侧的对象,所以在这个例子中
Run Code Online (Sandbox Code Playgroud)std::cin >> value1;
代码返回std::cin
.
但是,如果我这样做
while(std::cin >> value1)
Run Code Online (Sandbox Code Playgroud)
我的代码将处于循环中,直到出现std::cin
错误,因此必须表示运算符bool
在std::cin
未失败时返回true,在失败时返回false std::cin
.
哪一个是它?
据我所知,C++从左到右工作.例如,如果我这样做:
std::cout << "output" << "stream";
Run Code Online (Sandbox Code Playgroud)
C++首先从最左边的东西(std :: cout)开始,然后是<<运算符,它取右边的字符串文字("输出")并将它放到运算符左边的对象(std :: COUT).然后C++返回运算符左侧的对象(std :: cout),然后继续代码,另一个<<运算符.
"="运算符返回什么?
如果我做
double wage = 5;
double salary = wage = 9999.99;
Run Code Online (Sandbox Code Playgroud)
我认为"="运算符只返回"="的左或右操作数.因此,根据我的逻辑,在工资初始化的行中,工资用工资值初始化,然后"="运算符返回工资或工资(比如工资),然后它将9999.99分配给工资,但工资是走了,应该保持5的价值.
但是当我在"工资"初始化之后检查"薪水"和"工资"的值时,两者的值都是9999.99.如果我应用与上面使用std :: cout相同的逻辑,那么应该只有一个变量,"salary"或"wage",值为9999.99
在"C++入门"一书中,有一节关于类声明和定义.我不明白这句话的一切:
只有在定义了类时,才能将数据成员指定为类类型.
我不明白这句话背后的逻辑.如何将数据成员指定为类类型,此操作的含义是什么?
vector<int> v = { 1,2,3,4,5 };
for (auto beg = v.begin(); beg != v.end();++beg)
{
if (beg == v.begin())
v.push_back(50);
}
Run Code Online (Sandbox Code Playgroud)
在运行时,它说:"矢量迭代器不可递增".