2021-06-07

c++上机课复习

#include<iostream>
#include<iomanip>//为了指定输出字符宽度
#include<fstream>//使用文件操作运算符和函数
#include<string>//使用字符串类
using namespace std;

//关于类的常量成员
class cnstcla
{
	const int conmbr;
public:
	cnstcla(int i):conmbr(i){}//类的常量数据成员必须初始化,并且必须用构造函数的成员初始化列表进行
	const int getconmbr();
};
const int cnstcla::getconmbr()
{return conmbr;}//常量函数成员:定义和声明都要const关键字(调用时不需要),只能读不能改数据,但是可以改静态数据成员(因为静态数据成员不属于任何对象)
class youyuanzhuanyong
{
	void youyuan(int i){}
};
//类的定义
class kaoshi
{
private:
protected:
	int test_num;
	int ac_num;
public:
	static int obj_num;//类的静态数据成员,所有对象公用一个,在类外赋初值
	static void getObj_num();//类的静态函数成员,通常只操作类的静态数据成员
	kaoshi(int i);
	kaoshi(int i,int j);//构造函数(可以没有,也可以有多个形参列表相同的)
	kaoshi(const kaoshi& a){}//拷贝构造函数,一般在new和delete存在的时候需要使用,防止不同对象占有相同内存之后两次析构
	~kaoshi(){}//析构函数:可以不自定义或者自定义一个,无参数(一般如果构造函数中有new则需要析构函数去delete)
	void result();
	friend void fenshu();//定义在类外的函数声明为友元函数
	friend void youyuanzhuanyong::youyuan(int i);//其他类中的函数声明为友元函数(必须之前已经定义了这个类)

	//运算符重载(注意函数怎么写!!!)
	kaoshi operator+(kaoshi&a);
	void operator+=(kaoshi&a);
	kaoshi operator++();//前++
	kaoshi operator++(int);//后++
	friend istream&operator>>(istream&,kaoshi&a);//记得重载友元流提取和插入
	friend ostream&operator<<(ostream&,kaoshi&a);

};

//重载流提取和流插入运算符
istream&operator>>(istream&input,kaoshi&a)
{
	input>>a.test_num>>a.ac_num;
	return input;
}
ostream&operator<<(ostream&output,kaoshi&a)
{
	output<<a.test_num<<' '<<a.ac_num;
	return output;
}

//注意静态数据和函数成员只有在声明的时候才需要static关键字,另外使用的时候除了普通的.->之外,还可以::
int kaoshi::obj_num=0;//注意对静态成员赋初值的格式
void kaoshi::getObj_num()
{
	cout<<obj_num<<endl;
}
kaoshi::kaoshi(int i)
{
	test_num=i;
	obj_num++;
}
kaoshi::kaoshi(int i,int j):test_num(i),ac_num(j){obj_num++;}//用参数初始化表的形式定义类的构造函数
void kaoshi::result()//类外面定义成员函数的时候记得::
{}
void fenshu(){}

//继承和派生
class ruanjiankaoshi:public kaoshi/*,pubic kaoshi1*/ //可以多重继承
{
	//构造函数不能被继承,派生类的构造函数必须调用基类的构造函数来初始化对象
	ruanjiankaoshi():kaoshi(5){}//软件考试默认有五科目
	ruanjiankaoshi(int i):kaoshi(5,i){}
};
int main()
{
	//输入输出流
	int x;
	cin>>x;
	char ch;
	cin.get(ch);//输入一个字符,可以将空格赋值给字符
	char ch1,ch2;
	cin>>ch1>>ch2;//cin会过滤空白字符,不会将空格或者回车赋值给字符变量
	int i,j,k,l;
	cin>>hex>>i;//十六进制(进制输入只适用于整型)
	cin>>oct>>j;//八进制
	cin>>k;//八进制(如果指明进制输入,则一直有效直到下一次指明进制)
	cin>>dec>>l;//十进制
	cout<<x<<'\t'<<ch<<endl;//'\t'时tab
	cout<<setw(6)<<i<<j<<endl;//setw(6)只对其后一个输出项有效
	ifstream infile;//ifstream联系输入文件
	ofstream outfile;//ofstream联系输出文件

	//字符串
	string str;
	getline(cin,str);//getline整行读入,回车结束
	string s1;
	cin>>s1;//cin读入遇到空格、tab、回车结束
	cout<<str;
	string s2;
	s2=str+s1;//+实现字符串拼接
	s2+=s2;s2+="we";s2+='\n';//+=也可以实现字符串拼接,三种用法
	for(int m=0;m<str.length();m++)str[m]='0';//用下标操作字符串;length()函数和size()函数用来返回字符串的长度
	//可以用><==!=的符号,大小依据是字典顺序(比较最面的一个字母,前面都一样的话短的最小或比较下一个字母)
	str.clear();//清空字符串
	cout<<str.empty();//判断字符串是否为空

	//定义对象数组
	kaoshi group1[3]=
	{
		kaoshi(5,3),
		kaoshi(5,4),
		kaoshi(5,5)
	};
	//定义对象指针
	kaoshi*stu=new kaoshi(5,0);
	kaoshi const stu1(2);
	const kaoshi stu2(3);//两种方式定义常对象,数据成员值不能背修改,不能调用类的非const函数(构造析构除外)

	//指针和引用
	int *p=0;//0指针,不指向任何对象
	int pm=0;
	p=&pm;
	void *pv=p;//任何类型的指针都可以赋值给void类型的指针
	cout<<*((int *)pv)<<endl;//任意指针指向的数据要参与运算的话必须进行强制类型转换
	int &refpm=pm;//refpm是pm的一个别名
	//指针指向可改变,引用指向不可改
	//指针,变量,引用对其中一者赋值可以让三者的值都改变
	char ss1[5];
	char* const ptr1=ss1;//指针指向不可变,指向的值可以变
	const char* ptr2=ss1;//指针只能读取变量不能改变变量
	const char &ref3=ss1[0];//常引用只读取变量不改变变量

	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值