小编Nec*_*cip的帖子

bool类型的默认构造函数值

bool类型的默认构造函数在C++中返回哪个值?

例如,写作

int i = int();
Run Code Online (Sandbox Code Playgroud)

保证变量i始终以0开始.

我想这样的初始化例程也是可能的:

bool b = bool();
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我无法找到任何值,这样的默认bool构造函数被定义为返回.变量b是否始终用falsetrue初始化.

c++ boolean default-value

18
推荐指数
2
解决办法
2万
查看次数

C++数组构造函数

我只是想知道,是否可以在类构造时立即创建类的数组成员:

class C
{
      public:
          C(int a) : i(a) {}

      private:
          int i;
};

class D
{
 public:
        D() : a(5, 8) {}
        D(int m, int n) : a(m,n) {}

     private:
     C a[2];

};
Run Code Online (Sandbox Code Playgroud)

就我用Google搜索而言,构造函数中的数组创建(如上所述)在C++中是不可能的.或者,可以在构造函数块中如下初始化阵列成员.

class D
    {
     public:
         D() { 
               a[0] = 5;
               a[1] = 8; 
             }
         D(int m, int n) { 
                           a[0] = m;
                           a[1] = n; 
                         }
         private:
         C a[2];

    };
Run Code Online (Sandbox Code Playgroud)

但是,它不再是一个数组创建,而是数组赋值.数组元素由编译器通过其默认构造函数自动创建,随后将它们手动分配给C'tor块中的特定值.什么令人讨厌; 对于这样的解决方法,C类必须提供默认的构造函数.

有没有人知道哪些可以帮助我在构建时创建阵列成员.我知道使用std :: vector可能是一个解决方案但是,由于项目条件,我不允许使用任何标准,Boost或第三方库.

c++ arrays constructor

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

私有typedef在派生类中可见

我的编译器(VC++ 6.0)有一个小问题.在我看来,这样的代码应该导致错误;

class Base
{
    private:
        typedef int T;
};

class Derived : private Base // Here the Base class can be inherited publicly as well. It does not play any role
{
    public:
        T z;
};



int main()
{
    Derived obj;
    obj.z = 7;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码段在VC++ 6.0下编译和运行,没有任何问题.

关于SW-Design,这段代码并不完美.不应将任何类成员声明为公共成员.但我对这方面不感兴趣.

我的问题是typedef.typedef在Base类中声明为private.从我对C++的理解来看,这个typedef对Derived类或main()函数都不可见.但两人都完美地看待他们.

有没有人对这种现象有解释?

提前致谢

Necip

c++ inheritance typedef

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