C++问题汇总

来源:互联网 发布:java获取文件大小 编辑:程序博客网 时间:2024/06/05 19:31

1.    类的静态变量和静态函数问题? 对于类的静态变量分配内存是在静态变量初始化的时候开始的,那静态函数的初始化在哪里进行呢?在定义的类中,还是在类的实现之外?

答:都在在类的实现处初始化,但别忘记加上返回类型或者定义的变量类型。 在类的定义中初始化静态函数感觉上应该不对的。但是函数有一个重栽的特性,也就是说可以在同一个函数中定义两个相同的函数,如void a(); void a(); 编译器是不会报错的。也就是说当静态函数在类中定义的时候,每次用类定义对象时都会执行函数,而函数没有初始化这么一说,在哪里定义都是可以的。变量就不行,如果你在类中定义,就会出现重定义的问题!!注意,感觉vc里会出现bug

2. void CDrawView::AssertValid() const

{

       CView::AssertValid();

}

 

void CDrawView::Dump(CDumpContext& dc) const

{

       CView::Dump(dc);

}

如上,Dump都不是静态变量为什么可以如此的调用?

继承的关系

3.为什么增加OnLButtonUp()会自动增加

void CDrawView::OnCancelMode()

{

       CView::OnCancelMode();

      

       // TODO: Add your message handler code here

      

}这个消息相应?!

 

 

4:多维数组做函数行参的问题:

 

#include <iostream>

 

using namespace std;

 

const int x = 2;

const int y = 3;

 

int sum_arr(int** arr, int x, int y);

 

int main()

{

       int array[x][y] = {{1, 2, 3},

                                          {2, 4, 6}};

 

       int sum = sum_arr(array, x, y);

       cout<<sum<<endl;

}

 

int sum_arr(int** arr, int x, int y)

{

       int total = 0;

       int i, j;

       for(i=0; i<x; i++)

              for(j=0; j<y; j++)

              {

                     total += arr[i][j];

              }

       return total;

}

 

这个程序哪里不对?

 

构造函数没有返回值,那我怎么看对象是否创建成功?

 

答:数组调用的方式不对,应该以地址的方式调用,如:int sum_arr(int  (*arr)[3], int size)这样调用就对了

原创粉丝点击