1、编译器分两步处理类:首先编译成员的声明,然后才轮到成员函数体。因此,成员函数体可以随意使用类中的其他成员而无须在意这些成员出现的次序。
2、C++ IO对象属于不能被拷贝的类型,当我们在实际中需要在函数中使用的时候,只能通过引用来传递他们。IO类型的三个独立的头文件是:iostream、fstream 、 sstream
3、构造函数,任务:初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数;类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或参数类型上有所区别。
4、使用class和struct定义类唯一的区别就是默认的访问权限不一样,struct的默认是public,而class的默认权限是PRivate.
5、友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限,
6、在C++类内,用来定义类型的成员必须先定义后使用,这一点与普通的成员有所区别。
7、用mutable 关键字来修饰一个变量,一个可变数据成员永远不会是const,即使它是const函数对象的成员,
8、基于const的重载。通过区分成员函数是否是const的,我们可以对其进行重载。
9、友元不具有传递性。
10 、struct X
{
friend void f() {/*友元函数可以定义在类的内部*/}
X() {f();}//错误:f还没有被声明
void g();
void h();
};
void X::g() {return f();}//错误:Ff还没有被声明
void f();//声明定义在X中的函数
void X::h() {return f();}//正确,现在f 已经声明在作用域中了
Note:理解友元的声明的作用是影响访问权限的;
11、构造函数初始化的顺序:成员的初始化的顺序与它们在类的定义中的出现顺序一致。即在类中先定义的成员先被初始化,而并不是其在构造函数的参数列表中的出现顺序。
12、类的静态成员存在于任何对象之外,对象中不包含任何与静态数据成员有关的数据;静态成员函数也不与任何对象绑定在一起,它们不包含this指针。
13、静态数据成员不是由类的构造函数初始化的,不能在类的内部初始化静态成员,相反的,必须在类的外部定义和初始化每个静态成员,static关键字只出现在类内部的声明语句中。
新闻热点
疑难解答
图片精选