| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:关于类的变量初始化问题
只看楼主 加入收藏
Jonny0201
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
关于类的变量初始化问题
Class CTest{
Private:
    int x;
    int y;
Public:
    CTest(int a, int b)
    {
        x = a;
        y = b;
    }
};
int main()
{
    CTest T[1] = { CTest(0, 1) };
}

上面的T数组,如果把大小改成2,后面必须改成
CTest T[1] = { CTest(0, 1) , CTest(1, 2) };

否则就会报错,大概就是没有初始化
如果我想要让T数组很大,大小为100,不可能把100个每个都初始化,所以有没有什么其他的方法,让没有初始化的数组自动填一个给定的初始化数据,例如自动填(-1, -1)
2017-04-23 23:23
烟雨晨曦
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:150
专家分:599
注 册:2017-3-5
收藏
得分:5 
程序代码:
#include <iostream>
using namespace std;
class CTest
{

 private:
     int x;
     int y;

 public:
     CTest(int a, int b)
     {
         x = a;
         y = b;
     }
     CTest():x(0),y(0)
     {}

 };

int main()
{
     CTest a[100];
     return 0;
}
2017-04-23 23:55
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
若无缺省构造,我只想出了两个办法
1。用 std::vector
2。用 placement new

程序代码:
#include <vector>

class CTest
{
public:
    CTest( int x, int y ) : x_(x), y_(y)
    {
    }
private:
    int x_;
    int y_;
};

int main( void )
{
    std::vector<CTest> a( 2, CTest(-1,-1) );
}

程序代码:
#include <cstddef>
#include <new>

class CTest
{
public:
    CTest( int x, int y ) : x_(x), y_(y)
    {
    }
private:
    int x_;
    int y_;
};

int main( void )
{
    char buf[ 2*sizeof(CTest) ];
    CTest* a = (CTest*)buf;
    for( size_t i=0; i!=2; ++i )
        new(a+i) CTest(-1,-1);

    // ...

    for( size_t i=0; i!=2; ++i )
        a[2-1-i].~CTest();
}

2017-04-24 09:10
快速回复:关于类的变量初始化问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015090 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved