阿牛哥C++笔记---3

阿牛哥C++
第十四讲 实验三
-----对象的释放方法,析构函数的使用
析构函数前加~
和类名相同
没有参数
且是唯一的
不能重载
实现
系统会自动的调用析构函数。
指针变量会自动的释放内存空间,所以没有析构的说法
#include <iostream.h>
#include <string.h>//strcpy head file
class CStudent
{
public:
 CStudent(); //构造函数一定和它的类名字是一样的
 CStudent(char *name,int age); //可以和成员变量区分开来
 ~CStudent();

 void initialize(char *name,int age); //赋值
 void output();  //输出类对象
private:
 char m_name[20];
 int m_age;
};
//习惯在成员变量前面加上m_表示成员变量,以区分

//实现

CStudent::CStudent() //类很多,要用域操作符表明属于哪一个类
{
 strcpy(m_name,"");
 m_age = 0;
} //构造函数就是对数据成员进行初始化

CStudent::CStudent(char *name,int age)
{
 strcpy(m_name,name);
 m_age = age;  //从形参传递过来
} //实现两个构造函数

void CStudent::initialize(char *name,int age)
{ strcpy(m_name,name);
 m_age = age;
}
//析构函数的实现
CStudent::~CStudent()
{
 cout<<"the object is deconstructing"<<endl;//作为析构的

标记
}

void CStudent::output()
{
 cout<<m_name<<"     "<<m_age<<endl;
}

//定义对象
void main()
{
//无参的调用
/* CStudent stu1;
 stu1.output();
  
 CStudent stu2("Tom",23);
 stu2.output();
 stu2.initialize("JIM",44);
 stu2.output(); 
*/
 
//数组的使用和初始化

/* CStudent stu[3];
 CStudent stu[3]={
 CStudent(),CStudent("Crystal",21),CStudent()
 };
 for(int i=0;i<3;i++)
 {
  stu[i].output();
 }
*/      
//指针的使用和初始化
 CStudent stu;
 CStudent *p = &stu;
 p->output();
 (*p).output();
}

程序会把析构的标记输出

第十五讲 实验四
----掌握引用的使用方法
定义别名,一定要初始化,
使用,用别名调用其输出函数,
#include <iostream.h>
#include <string.h>//strcpy head file
class CStudent
{
public:
 CStudent(); //构造函数一定和它的类名字是一样的
 CStudent(char *name,int age); //可以和成员变量区分开来
 ~CStudent();

 void initialize(char *name,int age); //赋值
 void output();  //输出类对象
private:
 char m_name[20];
 int m_age;
};
//习惯在成员变量前面加上m_表示成员变量,以区分

//实现

CStudent::CStudent() //类很多,要用域操作符表明属于哪一个类
{
 strcpy(m_name,"");
 m_age = 0;
} //构造函数就是对数据成员进行初始化

CStudent::CStudent(char *name,int age)
{
 strcpy(m_name,name);
 m_age = age;  //从形参传递过来
} //实现两个构造函数

void CStudent::initialize(char *name,int age)
{ strcpy(m_name,name);
 m_age = age;
}
//析构函数的实现
CStudent::~CStudent()
{
 cout<<"the object is deconstructing"<<endl;//作为析构的

标记
}

void CStudent::output()
{
 cout<<m_name<<"     "<<m_age<<endl;
}

//定义对象
void main()
{
//无参的调用
/* CStudent stu1;
 stu1.output();
  
 CStudent stu2("Tom",23);
 stu2.output();
 stu2.initialize("JIM",44);
 stu2.output(); 
*/
 
//数组的使用和初始化

/* CStudent stu[3];
 CStudent stu[3]={
 CStudent(),CStudent("Crystal",21),CStudent()
 };
 for(int i=0;i<3;i++)
 {
  stu[i].output();
 }
*/      
//指针的使用和初始化
/* CStudent stu;
 CStudent *p = &stu;
 p->output();
 (*p).output();
*/
//引用的使用
 CStudent stu("Tom",32);
 CStudent &alias_stu = stu;
 alias_stu.output();
}

第十六讲 实验六
----this指针的使用
掌握两方面的应用
区别数据成员和普通变量
返回对象本身??第十七个视频文件讲解。
主要解决问题形参(普通变量)与数据成员的名字相同的问题。
this->age=age;
this 指向当前对象,所谓当前对象就是指我们下在调用的函数的对象
谁调用这个函数,this指针就指向谁,即指向当前的数据成员

返回对象本身??

第十八讲 实验七
--动态内存的分配,动态分配对象数组的方法。
new 分配内存
delete 释放内存空间

#include <iostream.h>
#include <string.h>//strcpy head file
class CStudent
{
public:
 CStudent(); //构造函数一定和它的类名字是一样的
 CStudent(char *name,int age); //可以和成员变量区分开来
 ~CStudent();

 void initialize(char *name,int age); //赋值
 void output();  //输出类对象
private:
 char m_name[20];
 int m_age;
};
//习惯在成员变量前面加上m_表示成员变量,以区分

//实现

CStudent::CStudent() //类很多,要用域操作符表明属于哪一个类
{
 strcpy(m_name,"");
 m_age = 0;
} //构造函数就是对数据成员进行初始化

CStudent::CStudent(char *name,int age)
{
 strcpy(m_name,name);
 m_age = age;  //从形参传递过来
} //实现两个构造函数
//以上数据成员用_标示了出来,如果使用this指针的话可以用this-

>age=age来实现
void CStudent::initialize(char *name,int age)
{ strcpy(m_name,name);
 m_age = age;
}
//析构函数的实现
CStudent::~CStudent()
{
 cout<<"the object is deconstructing"<<endl;//作为析构的

标记
}

void CStudent::output()
{
 cout<<m_name<<"     "<<m_age<<endl;
}

//定义对象
void main()
{
//无参的调用
/* CStudent stu1;
 stu1.output();
  
 CStudent stu2("Tom",23);
 stu2.output();
 stu2.initialize("JIM",44);
 stu2.output(); 
*/
 
//数组的使用和初始化

/* CStudent stu[3];
 CStudent stu[3]={
 CStudent(),CStudent("Crystal",21),CStudent()
 };
 for(int i=0;i<3;i++)
 {
  stu[i].output();
 }
*/      
//指针的使用和初始化
/* CStudent stu;
 CStudent *p = &stu;
 p->output();
 (*p).output();
*/
//引用的使用
/* CStudent stu("Tom",32);
 CStudent &alias_stu = stu;
 alias_stu.output();
*/
//动态分配内存,动态分配数组
 CStudent *p = new CStudent;
 p->output();
 delete p;

 CStudent *q = new CStudent[2];
 q[0].initialize("Jim",22);
 q[1].initialize("Lily",16);
 q[0].output();
 q[1].output();
 delete []q;
}

第十九讲 实验 八
掌握拷贝函数的使用方法

声明拷贝构造函数
名字和类名相同
只有一个参数
是一个CStudent类的引用
因为能过拷贝构造函数在一个已知的对象赋值给另一个对象

#include <iostream.h>
#include <string.h>//strcpy head file
class CStudent
{
public:
 CStudent(); //构造函数一定和它的类名字是一样的
 CStudent(char *name,int age); //可以和成员变量区分开来
 CStudent(const CStudent &student);//拷贝构造函数
 ~CStudent();

 void initialize(char *name,int age); //赋值
 void output();  //输出类对象
private:
 //char m_name[20];
 //int m_age;
 char name[20];
 int age;

};
//习惯在成员变量前面加上m_表示成员变量,以区分

//实现

CStudent::CStudent() //类很多,要用域操作符表明属于哪一个类
{
 strcpy(name,"");
 age = 0;
} //构造函数就是对数据成员进行初始化

CStudent::CStudent(char *name,int age)
{
 strcpy(this->name,name);
 this->age = age;  //从形参传递过来
} //实现两个构造函数
//以上数据成员用_标示了出来,如果使用this指针的话可以用this-

>age=age来实现
void CStudent::initialize(char *name,int age)
{ strcpy(this->name,name);
 this->age = age;
}
//析构函数的实现
CStudent::~CStudent()
{
 cout<<"the object is deconstructing"<<endl;//作为析构的

标记
}

CStudent::CStudent(const CStudent &student)
{
 strcpy(this->name,student.name);
 this->age = student.age;
}


void CStudent::output()
{
 cout<<name<<"     "<<age<<endl;
}

//定义对象
void main()
{
//无参的调用
/* CStudent stu1;
 stu1.output();
  
 CStudent stu2("Tom",23);
 stu2.output();
 stu2.initialize("JIM",44);
 stu2.output(); 
*/
 
//数组的使用和初始化

/* CStudent stu[3];
 CStudent stu[3]={
 CStudent(),CStudent("Crystal",21),CStudent()
 };
 for(int i=0;i<3;i++)
 {
  stu[i].output();
 }
*/      
//指针的使用和初始化
/* CStudent stu;
 CStudent *p = &stu;
 p->output();
 (*p).output();
*/
//引用的使用
/* CStudent stu("Tom",32);
 CStudent &alias_stu = stu;
 alias_stu.output();
*/
//动态分配内存,动态分配数组
/* CStudent *p = new CStudent;
 p->output();
 delete p;

 CStudent *q = new CStudent[2];
 q[0].initialize("Jim",22);
 q[1].initialize("Lily",16);
 q[0].output();
 q[1].output();
 delete []q;
*/
//拷贝函数
 CStudent stu1("JIM",22);
 CStudent stu2(stu1);
 stu1.output();
 stu2.output();
}

预习
友元函数
静态成员变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值