
A

A
申请了5个对象的空间,所以构造调用5次,但只析构了一次,应该用delete[] pclassa
申请空间malloc/calloc/realloc--->free
new--->delete
new[]->delete[]

B

D
静态成员变量:所有对象所共有的,并不属于具体的某个对象。
在类中声明(带static),类外面定义(不带static)。
静态成员变量一定不能在初始化列表初始化。
在类外访问静态成员变量时:
对象.静态成员 或者 类名::静态成员

A

C
一元运算符:该操作符只需要一个参数比如,++ --
前置++ A& operator++()
后置++ A operator++(int)

B
obj1 obj2 调用构造
obj3调用拷贝构造
return 0 函数结束->释放对象->调用析构

D
A const修饰的静态成员变量可以在类内初始化。
- class A
- {
- private:
- const static int _b=10;
- }

B
类的指针不会调用析构函数。类的成员会调用析构函数。
假设A类的构造函数是私有的,在类外,A*pa=new A;
new原理:1、申请空间 2、调用构造函数进行初始化(×) 即不能在类外面创建对象
delete原理:1、调用函数的析构函数(×)。2、释放空间。
需要给A的共有成员函数中添加一个函数
void Release(A*&p)
{ delete p;
}

B
template
template
template
template
走方格的方案数
思路:动态规划,当前位置只能由当前行的前一个位置或者上一行的同列位置过来
- #include
- #include
- using namespace std;
-
- int main()
- {
- //m行 n列
- int n,m;
- cin>>n>>m;
- vector
int>>dp(m+1,vector<int>(n+1,0)); - for(int i=0;i
1;i++) dp[i][0]=1; - for(int j=0;j
1;j++) dp[0][j]=1; - for(int i=1;i
1;i++) - {
- for(int j=1;j
1;j++) - {
- dp[i][j]=dp[i-1][j]+dp[i][j-1];
- }
- }
- cout<
- return 0;
- }
另类加法

- class UnusualAdd {
- public:
- //以二进制1+3为例
- //0000 0001
- //0000 0011
- //不考虑进位时,二者相加后的数应该为 0000 0010
- //进位的值应该是 0000 0001<<1
- //然后二者再相加 0000 0010 0000 0010
- //不考虑进位时 应该为 0000 0000
- //进位的值应该是 0000 0010<<1
- //在加就是+0了
- int addAB(int A, int B)
- {
- if(A==0) return B;
- if(B==0) return A;
- int a=A^B;//这里计算的是不考虑进位时的值
- int b=(A&B)<<1;//这里计算的是进位的值
- return addAB(a,b);
- }
- };