还是那句话,我们继续在简单的代码中,体会学习C++,本节主要是体会学习类的进阶知识.
一.构造函数与析构函数
当创建一个对象时,往往需要做一些初始化工作,例如对数据成员赋值等。为了解决这个问题,C++提供了构造函数。
构造函数(Constructor)是一种特殊的成员函数,它的名字和类名相同,没有返回值,不需要用户调用(用户也不能调用),而是在创建对象时自动执行。构造函数的作用是在创建对象时进行初始化工作,最常见的就是对成员变量赋值。
创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作(例如回收创建对象时消耗的各种资源),这个函数被称为析构函数。
析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要用户调用,而是在销毁对象时自动执行。与构造函数不同的是,析构函数的名字是在类名前面加一个”~“符号。
#include <iostream>
using namespace std;
class Student
{
public:
//构造函数,用参数初始化列表初始化
Student(string name1, int age1, float score1):name(name1), age(age1), score(score1){}
//析构函数
~Student();
//普通成员函数
void say();
private:
string name;
int age;
float score;
};
Student::~Student()
{
cout<<name<<"再见"<<endl;
}
void Student::say()
{
cout<<name<<"的年龄是 "<<age<<",成绩是 "<<score<<endl;
}
int main()
{
Student stu1("小明", 15, 90.5f);
stu1.say();
Student stu2("李磊", 16, 95);
stu2.say();
Student stu3("王爽", 16, 80.5f);
stu3.say();
cout<<"main 函数即将运行结束"<<endl;
return 0;
}
二 .C ++对象的常引用
我们知道,一个变量的引用就是变量的别名。实质上,变量名和引用名都指向同一段内存单元。
如果形参为变量的引用名,实参为变量名,则在调用函数进行虚实结合时,并不是为形参另外开辟一个存储空间(常称为建立实参的一个拷贝), 而是把实参变量的地址传给形参(引用名),这样引用名也指向实参变量。
#include <iostream>
using namespace std;
class Time
{
public:
Time(int h,int m,int s):hour(h),minute(m),sec(s){}
int hour;
int minute;
int sec;
};
//对象的常引用
void fun( const Time &t)
{
std::cout<<t.hour<<t.minute<<t.sec;
}
int main( )
{
Time t1(10,13,56);
//直接传递对象
fun(t1);
return 0;
}
转载于:https://blog.51cto.com/qtlinux/1695830