C++期末复习基础题(一)

本文详细讲解了C++中的数据类型、类名、构造函数、析构函数、友元函数以及相关概念,包括实数类型、常量、函数传递规则、析构函数特性、构造函数重载与友元函数应用,以及如何创建和操作日期类TDate实例。通过实例演示,展示了如何使用多种构造函数创建不同对象及友元函数的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键字:数据类型、类名等

实数类型:浮点数        5E3=5x10³    3E-5=3x10负五次方

常量:字符常量、字符串常量、整型常量     A.16进制数   B.浮点数    C.长整型    D.转义符号

相当于x=x*(x+2)

在设定参数的默认值后,该参数后面定义的所有参数都必须设定默认值

按顺序依次对应调用

B.  函数传递中必须是一个已经确定的值,不可传递表达式等

析构函数:无形参,也不可重载         释放对象所占内存资源

        对于任何一个类,析构函数最多有1个;类的析构函数是在删除对象时被自动调用的

 

b(2) 调用一次构造函数并且赋初值     b[2]调用两次构造函数     *P不是对象,不调用构造函数

友元函数只是使用了类中的私有成员           复制构造函数的作用是用对象初始化对象

构造函数可以被继承,析构函数不可以被继承

具有转化函数功能的构造函数:

定义一个处理日期的类TDate,它有3个私有数据成员:month,day,year和若干个公有成员函数,并实现如下要求:构造函数重载;成员函数设置缺省参数;定义一个友元函数来打印日期; 可使用不同的构造函数来创建不同的对象;⑤测试程序。

#include<iostream>
using namespace std;
class TDate
{
	private:
		int month,day,year;
	public:
		TDate(int d=10,int m=9,int y=1991):day(d),month(m),year(y){};
		TDate(char a){
			if(a=='t')
			{
				day=10;
				month=7;
				year=2018;
			}
		}
		friend void print(TDate &t);
};
void print(TDate &t)
{
	cout<<t.year<<"年"<<t.month<<"月"<<t.day<<"号"<<endl;
}
int main(void)
{
	TDate t1;
	TDate t2(30,10);
	TDate t3('t');
	print(t1);
	print(t2);
	print(t3);
}

1991年9月10号

1991年10月30号

2018年7月10号

默认赋值为0

char str[6]="good!";    数组中留有一个特殊的空间

int a[2][2]={1,2};//给a[0][0]和a[0][1]赋值         int a[2][2]={{1},{2}};   //a[0][0]和a[1][0]赋值

int a[2][2]={{1,2},{2,3}};  //a[0][0]  a[0][1]   a[1][0]  a[1][1]

int a[ ][2]   //和上面例子相同

int a[2][ ]   //行可以省略、列不可以省略

指针数组:是指一个数组里面装着指针,其实还是一个数组,定义形式为“int *a[10]”;

数组指针:是指一个指向数组的指针,其实还是一个指针,只不过是指向数组而已,定义形式为“int (*p)[10]”

int所占字节个数:4                      float所占字节个数:4

double所占自己个数:8               char所占字节个数:1

int *p,a;

*p=a; p存储a的地址并且指向a   

 p=&a; 

*p=&a;      //p=&&a;   错误

 p=a;     //编译错误

 *a+1=&a[0][1]       **a=1;

#include<iostream>
using namespace std;
int main()
{
	int a=2;
	int *p=&a;
	cout<<p<<endl;
	cout<<*p<<endl;
	
	int *q;
	q=&a;
	cout<<q<<endl;
	cout<<*q<<endl;
	
	int *l;
	*l=a;
	cout<<l<<endl;
	cout<<*l<<endl;
}

0xe3fd40
2
0xe3fd40
2
0x1420d44
2

int a;   //共有三种写法     此题中s相当于&a

int *p=&a;                int *p; p=&a;              int *p; *p=a;

(*name+i) = (*pName+i)=  ' \0 '

行优先存储     多维数组

程序阅读题:

#include  <iostream.h>
void main()
{
	static int b[][3] = { {1,2,3},{4},{5,6} };
	b[0][2]=12,b[1][2]=18;
    cout << **b<<"\t"<<**(b+1) <<"\t"
         <<**b+1<<"\t"<<*(*(b+1)+2) <<"\n";
	cout << b[0][2]+b[1][2]+b[2][2]<< endl;
}

运行结果:

1  4  2  18

30

数组b的存储:                                             **(b+1)指向下一行      **b+1指向下一列

1  2  3           1  2  12

4  0  0           4  0  18

5  6  0           5  6   0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值