-
如果没有自定义的析构函数则系统自动生成
析构函数在对象销毁时自动调用
析构函数没有返回值、没有参数也不能重载
查看全部 -
拷贝构造函数:类名(const 类名&变量名)&变量名可以省略
赋值和复制调用的都是类的拷贝构造函数
如果没有自定义的拷贝构造函数则系统自动生成一个默认的拷贝构造函数
当采用直接初始化或复制初始化实例化对象时系统自动调用拷贝构造函数
构造函数分为:无参构造函数与有参构造函数
无参构造函数一定是默认构造函数
有参构造函数:参数带默认值+参数无默认值
有参构造函数的参数所有都带默认值则是默认构造函数
系统自动生成的函数:普通构造函数,拷贝构造函数。后+初始化列表
查看全部 -
初始化列表的特性:
1、初始化列表先于构造函数执行
2、初始化列表只能用于构造函数
3、初始化列表可以同时初始化多个数据成员
初始化列表存在的必要性:
关于在构造函数中赋值是不能被允许的,只能通过初始化列表的存在来初始化构造函数的参数。例如有const的数据成员必须使用初始化列表进行初始化
查看全部 -
构造函数的规则和特点:
1、构造函数在对象实例化时被自动调用(有且仅有一次);
2、构造函数与类同名;
3、构造函数没有返回值(连 void 都不用写);
4、构造函数可以有多个重载形式(遵循重载规则,参数个数、类型、调用顺序不同等);
5、即使有多个构造函数,实例化对象时仅用到一个构造函数;
查看全部 -
类的写法一般是public写在前面,private写在后面
2.建议定义私有成员时命名为 m_数据类型+成员名 如:string m_strName 以便区分数据成员,知道数据成员是定义在类里面的 形参是_+成员名,如:void getName(string _name)
3.只读:初始化,只有get函数,不设置set函数。
查看全部 -
cin>>
用法1:输入一个数字或字符
用法2:接收一个字符串,遇“空格”、“TAB”、“回车”就结束
cin.getline()
用法:接收一个字符串,可以接收空格并输出
延伸:
1、cin.getline()实际上有三个参数,cin.getline(接收字符串的变量,接收字符个数,结束字符)
2、当第三个参数省略时,系统默认为'\0'
3、如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jkgetline()
用法:接收一个字符串,可以接收空格并输出,需包“#include<string>”
注意的问题
1、cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
2、当同时使用cin>>,getline()时,需要注意的是,在cin>>输入流完成之后,getline()之前,需要通过
str="\n";
getline(cin,str);的方式将回车符作为输入流cin以清除缓存,如果不这样做的话,在控制台上就不会出现getline()的输入提示,而直接跳过,因为程序默认地将之前的变量作为输入流。
清空缓存还可以用这个while (getchar() != '\n');/*清空输入流缓冲区的回车字符*/
查看全部 -
#include <iostream>
#include <string>
using namespace std;
/**
* 定义类:Student
* 数据成员:m_strName
* 无参构造函数:Student()
* 有参构造函数:Student(string _name)
* 拷贝构造函数:Student(const Student& stu)
* 析构函数:~Student()
* 数据成员函数:setName(string _name)、getName()
*/
class Student
{
public:
Student() {
m_strName = " ";
}
Student(string _name) {
m_strName = _name;
}
Student(const Student& stu) {
cout << "Student(const Student& stu)" << endl;
}
~Student() {
cout << " ~Student()";
}
void setName(string _name) {
m_strName = _name;
}
string getName() {
return m_strName;
}
private:
string m_strName;
};
int main()
{
// 通过new方式实例化对象*stu
Student* stu = new Student();
// 更改对象的数据成员为“慕课网”
stu->setName("慕课网");
// 打印对象的数据成员
cout << stu->getName() << endl;
delete stu;
stu = NULL;
return 0;
}
查看全部 -
堆和栈的区分
查看全部 -
对象的生命历程
查看全部 -
析构函数.
查看全部 -
析构函数.
查看全部 -
类的定义
1、关键字、类名
2、属性、数据成员
3、方法、成员函数
查看全部 -
构造函数可以赋默认值查看全部
-
有参查看全部
-
五参构造函数查看全部
举报