C++ 面向对象- -一些简单练习(二)

这篇博客深入探讨了C++的面向对象特性,包括常对象的使用、类对象初始化、参数初始化表、构造函数重载、单目运算符重载、函数模板、类模板的应用,以及如何进行引用操作。此外,还详细讲解了动态内存分配和对象的生命周期管理,如撤销内存和动态建立与释放对象的方法。
摘要由CSDN通过智能技术生成

目录

1、常对象的使用

2、类对象的初始化

3、参数初始化表实现的初始化(较常用)

4、构造函数的重载

5、单目重载-时间

6、函数模板

7、类模板

8、引用的示例

9、引用的示例

10、引用的示例

11、动态分配,撤销内存

12、对象的动态建立与释放


 

1、常对象的使用

#include <iostream>
using namespace std;
class Time{
		mutable int min ;
		const int sec ;
	public :
		int hour ;
		Time(int h=0 , int m=0 , int s=0):hour(h),min(m),sec(s){}
		/*若在类外:
			Time::Time(int h){
					hour = h ;
			}		对于常数据成员,这是非法的,不能对其赋值!*/
		void display_1() ;
		void display_2() const{				//将函数声明为常对象函数 
		cout << "时间:" << hour << ":" <<min << ":" <<sec <<endl;
			}
		/*void write() const{
			hour = 1 ;
			cout << "hour= " << hour << endl;
		}		常成员函数不能修改对象的数据成员 */		
		void write_1() const{
			min = 1 ;
			cout << "min= " << min <<endl;
		}
		void write_2() const ;
		void write_3() {
			min=3;
			cout << "min= " << min << endl;
		} 
		/*void write() {
			sec = 1 ;
			cout << "sec= " << sec <<endl;
		}常数据成员只能通过构造函数的参数初始化表进行初始化,其他任何函数都不可对其赋值*/
};
void Time :: write_2() const		//常成员函数在类外的定义。 
{	//const是函数类型的一部分,在声明函数和定义函数时都要有const关键字,调用时不用加 
	min = 2 ;
	cout << "min= " << min << endl;
}
void Time::display_1(){
		cout << "时间:" << hour << ":" <<min << ":" <<sec <<endl;
}
class Used{
		const int size ;
		int mount ;
	public:
		Used(int , int ) ;
		void show() const{		//常成员函数可以引用const数据成员,也能访问非const数据成员 
			cout << "size= " << size << '\t' << "mount= " << mount << endl;
		}
		void write(){
			mount = 2 ;
			cout << "mount= " << mount << endl;
		}
};
/*Used::Used(int s){
	size=s;
}	这就是刚才的例子:常数据成员不能被赋值		*/

//在类外的正确定义:  !!!
Used :: Used(int s,int m):size(s),mount(m){}
int main()
{
	Time t ;
	t.display_1();
	cout << "hour=" << t.hour << endl;
	
	Time const t1;
	//t1.display_1();			不能调用常对象中的普通成员函数 
	t1.display_2();			//常对象只能调用其常成员函数
	t1.write_1() ; //通过对数据成员声明mutable,使其变为可变的数据成员,
							//就可以用声明为const的成员函数修改它的值。
	t1.write_2(); 
	t.write_3();		//这行证明了不用声明const的成员函数也能修改它的值。。。
	Time t3(1,1,1) ;
	t3.display_1(); 
	
	Used u(1,1);
	u.show();
	u.write();			//一般函数能引用本类中的非const数据成员,也可修改。 
	return 0;
 } 

 

2、类对象的初始化

#include <iostream>
using namespace std ;
class Time{
		int hour ;
		int min ;
		int sec ;
	public :
		Time(){
			hour=23 ;
			min=59 ;
			sec=59 ;
		}
	void set();
	void show();
};
void Time::set(){
	cin >> hour >> min >> sec ;
}
void Time::show(){
	cout << "时间:" << hour << ":" << min << ":" << sec <<endl;
}
//同样可以在类外定义,在类内声明。
class Date{
		int year ;
		int month ;
		int day ;
	public:
		Date();
		show(){
			cout << year << "/" << month << "/" << day <<endl;
		}
}; 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值