【002】初识C++ <二 > 保留关键字(Typedef)、构造器和析构器

1.保留关键字  取别名(Typedef)

           


2.对象的创建

属性+方法!

3.1定义构造器

       对于你自己写的类,如果你没有自己写构造函数,编译器会自动给你产生一个构造函数,让你调用。

3.2 定义析构器

      析构器,也就是析构函数,当一个对象在消亡的时候,由编译器自动调用。对于系统自带的类型,例如int,char等,它的析构函数是由编译器提供的,对于你自己定义的类,它的析构函数是你自己写的。
      对象在什么时候消亡呢?
       对于普通的对象来说,就是在离开它的作用域的时候,比如你在一个函数里定义了一个对象,在跳出函数的时候,它就消亡了。

顺带说下new delete malloc free的区别,

int *p = new int();这个时候调用构造函数

delete p;这个时候调用析构函数

int *p = (int *)malloc(sizeof(int));这个时候不会调用构造函数

free(p);这个时候不会调用析构函数。

另外假如你定义一个类

class person{

public:

      person();

      persion(int age);

};

person myperson;这个时候会调用person();

person yourperson(10);这个时候会调用persion(int age);

代码练习:

#include <iostream>
#include <string>
#include<fstream>

class StoreQuote
{
	public:
		std::string quote,speaker;
		std::ofstream fileOutput;
		
		StoreQuote();
		~StoreQuote();
		void inputQuote();
		void inputSpeaker();
		bool write();
		
};

StoreQuote::StoreQuote(){
	fileOutput.open("test.txt",std::ios::app); 
}

StoreQuote::~StoreQuote(){
	fileOutput.close();
}	
void StoreQuote::inputQuote(){
	std::getline(std::cin,quote);
}
void StoreQuote::inputSpeaker(){
	std::getline(std::cin,speaker);
}
bool StoreQuote::write(){
	if( fileOutput.is_open())
	{
		fileOutput<<quote<<"|"<<speaker<<"\n";
		return true;
	}else{
		return false;
	}

}		
			
int main(){
	StoreQuote quote;
	
	std::cout<<"请输入一句名言:\n";
	quote.inputQuote();
	
	std::cout<<"请输入作者:\n";
	quote.inputSpeaker();
	
	if( quote.write() ){
		 std::cout<<"写入文件成功!\n";
	}	else{
		std::cout<<" 写入文件失败!\n";
		return 1;
	}
	
	return 0 ;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值