C++ Final Test
bool 类型
初始化string对象的方法:
string s1; s1为空串 string s2(“ABC”)
string s3(s2) 将s3初始化为s2的一个副本 string s4(n, ‘c’) 将s4初始化为字符’c’的n个副本
s.empty() 若s为空串,则返回true,否则返回false
s.size() s1=s2 v1==v2 v1!=v2 string可以直接判断是否相等
复制初始化 int x=1024; 直接初始化 int x(1024);
递归函数无法使用内联方式。
int *arr=new int[10]; delete [ ]arr;
当指针是指的一连串的地址时,可以使用[ ]数组的类似访问方法去访问。
int main(){
Dog *p=new Dog[5];
for (int i=0;i<5;i++){
p[i]->age=1;
p[i]->speak();
}
delete p;
p = NULL;
return 0;
}
在建立对象时不必给出实参的构造函数,称为默认构造函数。
无参构造函数属于默认构造函数。一个类只能有一个默认构造函数。
冒号构造函数法:初始化列表先于构造函数执行,初始化列表只能用于构造函数。
直接赋值算调用拷贝构造函数。
Student(const Student &stu){ }//这种方法是最规范的
Line *p=new Line();//一个指向类的说明方法
m_pCoorA = new Coordinate(1,3);//在指针指向的同时初始化生成
如果没有自定义的拷贝构造函数,则系统自动生成一个默认的拷贝构造函数。
析构函数不能被重载。仅含有纯虚函数的类叫做接口类
多态中存在的问题:内存泄露 解决:虚析构函数
四大限制:• 普通函数不能是虚函数• 静态成员函数不能是虚函数• 内联函数不能是虚函数• 构造函数不能是虚函数
静态多态(早绑定) 动态多态(晚绑定)
class Worker : virtual public Person{
};
class Farmer : virtual public Person{
soldier.play();
soldier.Person::play();//同名时可以这样区分
};
class MigrantWorker : public Worker,public Farmer{
};//注意虚继承的virtual的位置不要写错了就可以了。
void changeX() const;//常成员函数
class Circle;//这种友元类在后面,所以要提前声明一下。
class Coordinate
{
friend Circle;
public:
Coordinate(int x,int y);
private:
int m_iX;
int m_iY;
};
int Tank::s_iCount=0;//静态数据成员在类里面声明,在类外面定义。
分清楚多继承与多重继承。
友元关系不可传递、单向性、声明的形式及数量不受限制、只是封装的补充。
静态数据成员必须单独初始化。
静态成员函数不能调用非静态成员函数和非静态数据成员。
静态数据成员只有一份,且不依赖对象而存在。