程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数??

开发过程中遇到我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数?的问题如何解决?下面主要结合日常开发的经验,给出你关于我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数?的解决方法建议,希望对你解决我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数?有所启发或帮助;

我目前正在实现一个动态数组,它使用模板来识别存储的类型。但是,我目前遇到的问题是我不知道如何制作一个构造函数,该构造函数接受与用户为初始化数组而输入的参数一样多。函数重载没有任何帮助,因为函数可能没有被编写为接受用户的参数数量,这将是一个非常大的设计问题。

下面是我为这个动态数组实现的类,以帮助了解我正在尝试创建的内容。

template <typename T>
class array
{
    private:

        T *arr;
        int size; //Size of current array
        int items; //items currently in array

    public:

        ~array();
        array();

};

解决方法

这是一个高度简化的案例(它不会调整大小),但(我希望)解决了您的具体构造问题。如果你这样做是为了练习,你应该从更简单的东西开始,比如堆栈,并阅读异常保证的所有有趣的细微差别(Sutter 对此进行了精彩的分析)。

#include <iostream>
#include <initializer_list>
#include <algorithm>

template <typename T>
class array
{
     size_t size; //Size of current array
     int items; //items currently in array
     T *arr;
public:

     //copy and moving semantic omitted

     ~array() { delete[] arr; }
     //use initializer list available from C++11
     array(std::initializer_list<T> init) 
       : size(init.size()),items(init.size()),arr(new T[init.size()])
     {
         std::copy(init.begin(),init.end(),arr);
     }

     //create an array with n elements of a specific value
     array(size_t count,const T& value)
       : size(count),items(count),arr(new T[count])
     {
         std::fill(arr,arr + count,value);
     }

     std::ostream& print(std::ostream& os) const
     {
         for (size_t i = 0; i < size; i++)
             os << arr[i] << " ";
         return os;
     }
};

int main()
{
    array<int> a({1,2,3,4,5,6,10});
    a.print(std::cout);
    array<double> b(5,-1.5);
    b.print(std::cout);
}

C++11 支持初始化列表。

部分文章:

https://www.stroustrup.com/except.pdf 强异常保证向量实现。

https://ptgmedia.pearsoncmg.com/imprint_downloads/informit/aw/meyerscddemo/DEMO/MAGAZINE/SU_FRAME.HTM 栈异常安全分析(记得书版比本文要扩展)

请参阅此链接了解 0/3/5 what is The Rule of Three?

的规则

https://en.cppreference.com/w/cpp/language/rule_of_three

我们确实必须编写析构函数,因此其他(至少)两个函数都到期了。

大佬总结

以上是大佬教程为你收集整理的我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数?全部内容,希望文章能够帮你解决我应该如何实现一个在 C++ 中接受未知数量参数的数组构造函数?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: