小编esh*_*esh的帖子

重载函数隐藏在派生类中

在派生类中如果我从Base类重新定义/重载函数名,
那么这些重载函数对派生类是不可访问/可见的.
为什么是这样??

如果我们不在派生类的基类中重载oveloaded函数,那么该函数的所有重载版本都可用于派生类
对象,为什么这个?
这背后的原因是什么?如果您在编译器和链接器级别解释这
将对我更有帮助.是不是可以支持这种scinario?

Edited  
For examble:

class B  
{  

  public: 
     int f() {}
     int f(string s) {}
};

class D : public B
{
   public:
    int f(int) {}
};

int main()
{
   D d;
   d.f(1);
   //d.f(string);  //hidden for D
} 

Now object 'd' can't access f() and f(string).

c++ overloading

15
推荐指数
2
解决办法
5295
查看次数

c中的错误,但不是c ++中的错误

const int t=5;
char buf[t+5];
Run Code Online (Sandbox Code Playgroud)

当我编译它时,在C中给出错误但在C++中没有!
有人可以解释一下原因吗?

注意:我知道const默认为'C++'中的内部链接,其中'C'默认为外部链接.它与上述情况有什么关系吗?

c c++ compiler-errors

8
推荐指数
2
解决办法
341
查看次数

复制构造函数未调用?

class X
{
  int i;  
  public:
  X(int m) : i(m) {};

  X(const X& x)
  {
    //cout "copy constructor is called\n";
  }

  const X opearator++(X& a,int)
  {
     //cout "X++ is called\n";
     X b(a.i);
     a.i++;
     return b;
  }
  void f(X a)
  {   }
};

 int main()
{ 
  X a(1);
  f(a);
  a++; 
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里当调用函数'f'时,复制构造函数将按预期调用.在++的情况下,调用operator ++函数,但是当它返回"不调用复制构造函数"时.为什么"从函数'运算符++'返回时没有调用复制构造函数?

c++ constructor copy

0
推荐指数
2
解决办法
796
查看次数

标签 统计

c++ ×3

c ×1

compiler-errors ×1

constructor ×1

copy ×1

overloading ×1