-
const修饰的常量初始化时不可以用构造函数直接赋值,必须用初始化列表的方法
查看全部 -
构造函数在实例化对象时被调用且仅被调用一次
查看全部 -
字符串的访问方法s.empty()可以访问对象函数s为空串为true 否则为false
s.size() 访问字符串个数
查看全部 -
string的四种初始化方法
查看全部 -
用栈访问定义对象eg: tv.type=0可以访问数据,tv.changevol( )可以访问成员函数,用堆访问方法eg: 定义一个指针8p p->type=0;
p->changevel( );注意区别两种访问的方式的不同
查看全部 -
init初始化
new&&delete
string
查看全部 -
string类型
查看全部 -
类&&对象
typedef struct
{
char name[20];
int age;
int type;
void speak();
void run();
}DOG;目的不同,抽象出的信息不同;
封装(暴露与隐藏)--访问限定符:
public
private
protected
查看全部 -
构造函数、析构函数也可以在类内定义
堆对象->函数名,调用函数一定记住
delete销毁对象,并使指针指向NULL
查看全部 -
最大区别就在于,从栈中申请内存,在使用完后无需释放(自动调用析构函数),但是从堆中申请内存,使用完以后必须释放(delete销毁对象时调用析构函数)!
注意:从堆中申请内存,是有可能失败的,所以要加上对于申请内存是否成功的判断!
查看全部 -
为了在对象销毁之前释放资源,需要自定义析构函数~Student(不需要参数);析构函数的定义在任何位置都可以,这样就会在对象销毁时自动调用析构函数(无论是普通方式实例化对象或是通过拷贝构造函数实例化对象)。
当程序中没有析构函数时,系统会自动生成以下析构函数:<类名>::~<类名>(){},即不执行任何操作。
回想一下构造函数是<类名>::<类名>(){}差别就在一个~
用堆实例化对象,析构函数会在所有进程结束也就是窗口关闭后自动调用;而用栈实例化的对象,在用delete语句销毁时,自动调用析构函数;调用拷贝构造函数的对象也是同堆实例化的对象一样在窗口关闭之时自动调用析构函数
析构函数在栈、堆中都能被调用,但是在堆中不会自动调用,必须手动释放内存,否则会造成内存泄漏截图中程序第一行是栈中实例化对象打印出
第二、三行是堆中实例化对象和销毁对象时打印的
最后按任意键继续还会一闪而过t1的析构函数
查看全部 -
拷贝构造函数的定义
查看全部 -
自定义拷贝构造函数的声明
查看全部 -
const修饰的变量初始化只能在初始化列表当中m_iMax(m)
用 const 修饰的常量,只能用 初始化列表 的方式初始化数据成员
查看全部 -
#直接初始化||复制初始化对象时,系统自动调用拷贝构造函数。
Student stu1;//调用普通构造函数
Student stu2 = stu1;//直接初始化
Student stu3(stu1);//复制初始化
查看全部
举报