http://www.imooc.com/learn/382
问:如何判断字符串name,输入为回车键?
答:使用getline()来
getline(cin,name);
if(name.empty()){
cout<<"输入为空"<<endl;
return 0;
}
问:C++中类的成员变量默认是私有还是共有?
答:sturct默认是公有的,class默认是私有的。
问:如何设置一个类的成员变量name为只读?
答:把该成员变量name设置为private,使用public的getName()方法,不写setName()方法就可以了。
问:类内定义与内联函数关系?类外定义?
答:编译器会自动将类内定义的函数优先为内联函数inline, 书写时不需要加inline。
类外定义,类内声明,类外void Student::getName(){ //函数体}。
分文件类外定义,在头文件里Student.h里声明类,在Student.cpp里添#include“Student.h”(""是搜索所有目录,<>是搜索当前目录),接着写void Student::getName(){ //函数体}。
问:内存分区?
答:栈区:内存由系统分配,无论是分配还是回收,都不需要程序员关心;
堆区:内存需要程序员关心管理的。
问:构造函数?
答:为了避免程序员忘记初始化或是重复初始化,引入了构造函数,它是在对象实例化被自动调用,被调用且只有一次。构造函数与类名同名,没有返回(连void都不用),可以重载。
问:初始化列表特性?
答:初始化列表先与构造函数体内执行;初始化列表只能用在构造函数;初始化列表可以同时初始化多个成员变量。
构造函数执行分为两个步骤:初始化阶段(所有类类型的成员变量都会在初始化阶段初始化),计算阶段(执行构造函数体内的赋值操作)。
使用初始化列表主要基于性能问题,少了一次调用默认构造函数的过程,对于数据密集型的类来说非常高效。
http://www.cnblogs.com/graphics/archive/2010/07/04/1770900.html
以下情况必须使用初始化列表:常量成员,因为常量只能初始化不能赋值;引用类型,引用必须在定义的时候初始化,并且不能修改引用的对象(不是不能赋值,而是不能修改
引用的对象,比如这里x是y的引用,就一直是y的引用不会变化,对引用赋值就是对它引用的对象赋值,比如这里x=7和y=7是一个意思。);没有默认构造函数的类类型,因为使
用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化。
问:拷贝构造函数?
答:拷贝构造函数:Student(const Student &stu{...}
拷贝构造函数的参数是确定的,不能重载 。
如果没有自定义的拷贝构造函数,系统会自动生成一个默认的拷贝函数;当采用直接初始化或是复制初始化实例对象时,系统自动给调用拷贝构造函数。
问:析构函数?
答:对象销毁时会自动调用,回收资源,收拾最后残局。
格式:~类名(){...}
没有返回值,没有参数,不能重载
问:对象的生命历程?
答: