【No.10 C++クラスメンバーの初期化順】


==【注意】==
プログラム言語は私たちがコンピュータと交流し、コンピュータに私たちの創造的な思想を実現させるツールにすぎず、一つの言語を深く掌握することを奨励することができるが、ある言語の牛の角の先に夢中になってはいけない.必ず両者の間の度を把握しなければならない.
本帖は不定期连载贴で、问题の形式で1つの比较的に基础的な问题を提出してみんなに讨论を考えさせて、问题の解析は次の更新贴の中で一绪に提供して、このようにするのはまだ问题の友达が自分で考えて讨论する时间があることを望んで、みんながこれらの招待状の中から収获があることを望みます.私がCC++を学ぶ过程の中で出会ったいくつかの文法あるいは比较的に暗いプログラムの问题に属して、その中に自分の総括があって、ネット上で検索した経典の解析も少なくなくて、ここでみんなに分かち合って、レンガを投げて玉を引く作用を果たすことができることを望んで、私はすでに自分の招待状を真剣に検査したことがあって、しかしどうしても油断して、もしみんなが読む过程の中で依然として问题があることを発见するならば、皆さんを誤解しないように、速やかにお知らせください.ありがとうございます.
【No.10 C++クラスメンバーの初期化順】
連載形式のため、各帖の第2部には前の質問の解答が付いている.投稿の目的性と一貫性を保つために、この投稿は今回の問題を交流して議論するためにのみ使用されます.前の問題について質問があったら、最後の転送リンクを通じてこの問題に返信してください.
[問題10]次のコードの実行結果を書き出し、理由を説明してください.
クリップボードに内容をコピー
コード:#include<iostream>
using namespace std;

class Test
{
  public:
    Test(void):_j(0), _i(0){}
    Test(int k):_j(k), _i(_j){}
    void print(void)
    {
      cout<<"i = "<<_i<<endl
             <<"j = "<<_j<<endl;
    }
  private:
    int _i;
    int _j;
};

int main(int argc, char **argv)
{
  Test t(20);
  t.print();

  return EXIT_SUCCESS;
}

No.9メモリが漏れていますか?たんせき
問題の浅い分析
クリップボードに内容をコピー
コード:#include<stdio.h>
#include<malloc.h>
#include<string.h>

//AllocationMem , char *
// main AllocationMem
// p , ptr p
// , ptr = NULL, ptr
// AllocationMem ,
// p , , AllocationMem
// ptr sizeof(char *) * size
// , AllocationMem ,ptr
// , ,
// , sizeof(char *) * size
void AllocateMem(char *ptr, int size)
{
  ptr = (char *)malloc(sizeof(char *) * size);
}

void main(void)
{
  char *p = NULL;
  AllocateMem(p,5);  // p 5
                               // , p NULL
  strcpy(p,"1234");  // p NULL, strcpy ,
  printf("%s
",p);
}