1.虚继承,处理B,C继承A,而D又继承BC的问题
#include <iostream>
using namespace std;
class A
{
int i;
public:
A(int i):i(i)
{
cout<<"A"<<i<<endl;
}
};
class B : virtual public A
{
int b;
public:
B(int i):b(i), A(i)
{
cout<<"B"<<b<<endl;
}
};
class C : virtual public A
{
int c;
public:
C(int i):c(i), A(i)
{
cout<<"C"<<c<<endl;
}
};
class D : public B, public C
{
int d;
public:
D(int i):d(i),B(i),C(i),A(i) //不初始化A会报错
{
cout<<"D"<<i<<endl;
}
};
int main()
{
B b(1);
C c(2);
D d(5);
system("pause");
return 0;
}
2.析构函数可以显示调用
3.字符'\0'的ascii码为0
4.最大公约数:
int gcb1(int a, int b)
{
int temp;
while (b)
{
temp = b;
b = a%b;
a = temp;
}
return a;
}
int gcb(int a, int b)
{
if (b)
return gcb(b, a%b);
else
return a;
}
5.求绝对值:a>0?a:-a;
6.父子类之间没有重载,同名覆盖
7.重载与返回类型无关
8.创建子类时,如果没有在初始化列表中初始化父类,默认调用父类无产构造函数
9.无名对象,语句结束立即释放
10.要求类有相应参数的构造函数则:A a = A(40); A a = (A)40; A a = 40;强制类型转换,默认有低级类型转向高级类型
11.常量对象不能调用普通成员函数,普通对象优先调用普通成员函数
12.class可以继承struct