小编tar*_*len的帖子

分配为默认初始化

假设我有一个struct(或类)动态数组,它的长度和构造函数:

struct array {
    int l;
    int* t;
    array(int length);
};

array::array(int length) {
    l=length;
    t=new int[l];
}
Run Code Online (Sandbox Code Playgroud)

我假设到目前为止所有内容都是合法的:这就是我写它的方式(尽管它可能不是唯一的方法),但是我看到了下面的代码,它似乎有点起作用:

struct array {
    int l;
    int* t = new int[l];
    array(int length);
}

array::array(int length) {
    l=length;
}
Run Code Online (Sandbox Code Playgroud)

它看起来很糟糕,所以我想知道这是出于纯粹的运气和未定义的行为,还是有一些内部规则可以使这段代码正常工作.

c++ constructor

17
推荐指数
2
解决办法
996
查看次数

我的参考变量发生了什么?

我试图在C++中获取引用(我想我已经在Java和Javascript中得到它,但转换比我想象的更难).这是一段代码,其结果我不明白:

#include <iostream>
#include <vector>
int main()
{
    std::vector<int> x;
    x.push_back(1);

    std::vector<int> y;
    y.push_back(2);

    std::vector<int>& r=x;
    r.push_back(3);

    std::vector<int>& s=r;
    s.push_back(4);

    s=y;
    r.push_back(5);
    s.push_back(6);

    std::cout<<"x: ";
    for(int i: x) {std::cout<< i<< " ";} std::cout<<"\n";

    std::cout<<"y: ";
    for(int i: y) {std::cout<< i<< " ";} std::cout<<"\n";

}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出(使用g ++ 4.9.2):

x:2 5 6

y:2

我不明白这一点:元素1,3,4的变化是什么?我原以为x为1,3,4,5,y为2,6.拥有整数向量的事实是否会产生影响?

c++

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

标签 统计

c++ ×2

constructor ×1