小编Sab*_*ien的帖子

C++ istream 运算符重载 - 即使声明为朋友也无法访问数据成员

我有一个类 Complex,我试图重载 istream 运算符 >> 以允许用户以“(a,b)”的形式输入复数。下面是我的头文件和我的实现。现在,我收到一个错误,说我的重载 >> 函数无法访问真实或虚构的数据成员,因为它们不可访问,即使我在类头文件中将它们声明为朋友。谁能解释一下我没有看到的内容?

头文件:

// Complex class definition.
#ifndef COMPLEX_H
#define COMPLEX_H

class Complex
{
friend std::ostream &operator<<(std::ostream &, const Complex &);
friend std::istream &operator>>(std::istream &, const Complex &);
public:
   explicit Complex( double = 0.0, double = 0.0 ); // constructor
   Complex operator+( const Complex & ) const; // addition
   Complex operator-( const Complex & ) const; // subtraction
   //Complex operator*(const Complex &); // function not implemented yet
private:
   double real; // real part
   double …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading istream

1
推荐指数
1
解决办法
1348
查看次数

在c ++程序中添加不必要的花括号{}会减慢它吗?

这可能是一个愚蠢的问题,但我是C++和编程的新手,我在这里找不到答案.我知道在C++中,{}在某些情况下是可选的.例如,如果您有一个只执行一个操作的简单if语句,则不需要用{}括起它.

我只是想知道额外的括号是否对程序的速度有任何影响(即使是最小的).我问的原因是因为我总是在我的所有语句中包括大括号,即使不是必需的,只是因为我想阻止我的代码.

我个人的偏好是:

   if (foo)
   {
        bar;
   }
Run Code Online (Sandbox Code Playgroud)

而不是简单

   if (foo)
       bar;
Run Code Online (Sandbox Code Playgroud)

我只是喜欢阅读代码时的样子.但是,如果这实际上对代码的速度有影响,那可能不是一个好主意.有谁知道额外的括号是否会影响速度?谢谢.

c++

0
推荐指数
1
解决办法
1277
查看次数

标签 统计

c++ ×2

istream ×1

operator-overloading ×1