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)这样调用就对了