1、 main()函数有两个参数:一个整型参数,通常的表示为:int argc;一个指向字符串指针的指针参数,通常表示为:char ** argv; 示例如下:
2、 在定义ofstream/ifstream类型对象的时候需要提供一个文件名,要求提供的是一个指向以空字符结尾的字符数组的首元素的指针。
3、 赋值和初始化的区别:赋值总是删除一个旧值,获得一个新值,而初始化包含创造一个新的对象,同时给它一个初始值。
4、 explicit 关键词添加到构造函数前面,则该构造函数不能作为类型转换操作符隐式的调用,只能显示调用。
5、 string类中c_str()成员函数会生成一个指向一个空字符结尾的字符数组的const char*类型的值。但该数组的值只短暂的存在,在下一个可能改变s的值的操作放生时就失效了。
6、 C++中的继承方式有三种:1、public:继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。2、private:继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。3、protected:继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
7、 初始化列表的作用相当于在构造函数内进行相应成员变量的赋值,但两者是有差别的。在初始化列表中是对变量进行初始化,而在构造函数内是进行赋值操作。两者的差别在对于像const类型数据的操作上表现得尤为明显。我们知道,const类型的变量必须在定义时进行初始化,而不能对const型的变量进行赋值,因此const类型的成员变量只能(而且必须)在初始化列表中进行初始化,即下面的代码将会出错:
myClass::myClass(){
a = 1;//没错,效果相当于在初始化列表中进行初始化
b = 1;//出错,const变量不能进行赋值操作;}
2)初始化的顺序与成员变量声名的顺序相同。
先看一下下面的程序:
myClass::myClass():b(1),a(b){ }
这样的执行结果a,b各是多少呢?b=1,a=1?不是,b=1而a是个随机数。这一点是相当重要的哦,一般在初始化列表中进行初始化时,初始化的顺序应与声明的顺序保持一致,防止出现不必要的错误。
3)对于继承的类来说,在初始化列表中也可以进行基类的初始化,初始化的顺序是先基类初始化,然后再根据该类自己的变量的声明顺序进行初始化。
8、 C++关键字mutable:突破const的限制而设置的,被mutable修饰的变量将永远处于可变的状态,即使在cosnt函数中。
9、 const 数据成员、const成员函数和const类对象的特点和属性:1、const数据成员不能被赋值,只能在定义时初始化。2、const成员函数不能修改类数据成员,一般情况下只要改函数方法不修改类数据成员,均需要将其定义成const成员函数,不能访问非const成员函数。3、const类对象只能访问const成员函数。
2、 在定义ofstream/ifstream类型对象的时候需要提供一个文件名,要求提供的是一个指向以空字符结尾的字符数组的首元素的指针。
3、 赋值和初始化的区别:赋值总是删除一个旧值,获得一个新值,而初始化包含创造一个新的对象,同时给它一个初始值。
4、 explicit 关键词添加到构造函数前面,则该构造函数不能作为类型转换操作符隐式的调用,只能显示调用。
5、 string类中c_str()成员函数会生成一个指向一个空字符结尾的字符数组的const char*类型的值。但该数组的值只短暂的存在,在下一个可能改变s的值的操作放生时就失效了。
6、 C++中的继承方式有三种:1、public:继承时保持基类中各成员属性不变,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象只能访问基类中的public成员。2、private:继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。3、protected:继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。
7、 初始化列表的作用相当于在构造函数内进行相应成员变量的赋值,但两者是有差别的。在初始化列表中是对变量进行初始化,而在构造函数内是进行赋值操作。两者的差别在对于像const类型数据的操作上表现得尤为明显。我们知道,const类型的变量必须在定义时进行初始化,而不能对const型的变量进行赋值,因此const类型的成员变量只能(而且必须)在初始化列表中进行初始化,即下面的代码将会出错:
myClass::myClass(){
a = 1;//没错,效果相当于在初始化列表中进行初始化
b = 1;//出错,const变量不能进行赋值操作;}
2)初始化的顺序与成员变量声名的顺序相同。
先看一下下面的程序:
myClass::myClass():b(1),a(b){ }
这样的执行结果a,b各是多少呢?b=1,a=1?不是,b=1而a是个随机数。这一点是相当重要的哦,一般在初始化列表中进行初始化时,初始化的顺序应与声明的顺序保持一致,防止出现不必要的错误。
3)对于继承的类来说,在初始化列表中也可以进行基类的初始化,初始化的顺序是先基类初始化,然后再根据该类自己的变量的声明顺序进行初始化。
8、 C++关键字mutable:突破const的限制而设置的,被mutable修饰的变量将永远处于可变的状态,即使在cosnt函数中。
9、 const 数据成员、const成员函数和const类对象的特点和属性:1、const数据成员不能被赋值,只能在定义时初始化。2、const成员函数不能修改类数据成员,一般情况下只要改函数方法不修改类数据成员,均需要将其定义成const成员函数,不能访问非const成员函数。3、const类对象只能访问const成员函数。