C++入门5

一.隐形类型转换

系统自动进行,不需要开发人员转化

	int m = 3 + 183.6;//把小数部分截掉,属于隐式类型转化
	double n = 3 + 183.6;

二.显示类型转换,也称为强制类型转换

C语言的方法:

	int m = 5 % (int)3.2;//属于C语言风格的转化
	int m = 5 % int(3.2);//等价于上边

C++的方法:

a.static_cast;//静态转换,字面理解就是正常的转换,要注意转换的安全性和正确性,比如不能把字符串类型转化为整形;

	//C风格的转换
	double f = 100.34f;
	int i = (int)f;
	//C++风格
	int i2 = static_cast<int>(f);//<>里面是要转化成的类型,()里面是要转化的值
	//把子类转化成父类的对象
	class A {};
	class B :public A{};//子类继承父类
	B b;
	A a = static_cast<A>(b);//把子类转化成父类对象,但是父类不可以转化成子类

b.dynamic_cast;主要用于运行时类型识别和检查,也是父类和子类的相互转换

c.const_cast;只能用来去除指针和引用的const的属性,在编译时进行类型转换。

	const int ai = 90;
	const int* pai = &ai;
	int* pai2 = const_cast<int*>(pai);
	*pai2 = 200;//在语法中没错,但是用这种方式改值很不好属于未定义行为(有可能写进去,也有可能没写进去)

d.reinterpret_cast;编译时进行转化类型的检查,重新解释类型。主要用来处理无关类型的转换。(危险的类型转换,功能上很强大)

	int i = 10;
	int* pi = &i;
	int* p2 = reinterpret_cast<int*>(&i);
	char* p3 = reinterpret_cast<char*>(pi);

e.void 万能指针与其他指针的转换,void *无指针类型,可以转向任何指针

总结.所有的强制类型转换都不建议使用,会干扰系统的内容检查,会抑制编译器报错。

三.类

1.综述

类是我们自己定义的数据类型(新类型)

设计类要考虑的角度:

要站在设计和实现者的角度来考虑

要站在使用者的角度来考虑

父类子类问题,父类中要放上公共属性。

2.类基础

a.一个类就可以当作用户自己设定的命名空间里面有成员函数和成员变量。

b.类主要由成员函数和成员变量组成。

class student {
public:
	int number;
	char name[100];
};
int main()
{
	student someone;
	someone.number = 1000;
	//使用指向对象的指针的话,格式如下
	student* psomeone = &someone;
	psomeone->number = 20000;
	cout << someone.number << endl;

.public 成员是暴漏给外界,提供给外界的接口,private成员提供实现各种类方法的细节问题,不爆露给外界,因此外界无法使用。

struct结构,默认是pubic属性,都是公开的,class成员默认是私有的private

a.C语言的初始化成员函数

class Time {
public:
	int Hour;
	int Minute;
	int Second;
};
void inittime(Time& stemptime, int tmphour, int tmpmin, int tmpsec)
{
	stemptime.Hour = tmphour;
	stemptime.Minute = tmpmin;
	stemptime.Second = tmpsec;

}
int main()
{
	Time mytime;//类对象,把对象初始化

	inittime(mytime, 11, 14, 5);
	cout << mytime.Hour << endl;
	cout << mytime.Minute << endl;
	cout << mytime.Second << endl;

b.C++的写法

class Time {
public:
	int Hour;
	int Minute;
	int Second;
	//成员函数
	void inittime( int tmphour, int tmpmin, int tmpsec)
	{
		Hour = tmphour;
		Minute = tmpmin;
		Second = tmpsec;

	}
};

int main()
{
	Time mytime;//类对象,把对象初始化
	mytime.inittime(11,14,5);
	cout << mytime.Hour << endl;
	cout << mytime.Minute << endl;
	cout << mytime.Second << endl;

.成员函数中可以直接使用成员变量名

头文件
#ifndef __MYTIME__//头文件防卫式声明
#define __MYTIME__
//头文件放定义
class Time {
public:
	int Hour;
	int Minute;
	int Second;
	//成员函数
	void inittime(int tmphour, int tmpmin, int tmpsec);
};








#endif
源文件
#include"Time .h"

//成员函数的实现
//两个冒号叫做  作用域运算符
void Time::inittime(int tmphour, int tmpmin, int tmpsec)
{
	Hour = tmphour;
	Minute = tmpmin;
	Second = tmpsec;

}

c.对象的拷贝

int main()
{
	Time mytime;//类对象,把对象初始化
	//对象的拷贝
	mytime.Hour = 10;
	mytime.Minute = 14;
	mytime.Second = 30;
	//这四种方式都可以初始化
	//对象本身都是可以拷贝的,下边的四种方式都是可以拷贝的
	//而且是每一个成员变量逐个拷贝
	Time mytime2 = mytime;
	Time mytime3(mytime);
	Time mytime4{ mytime };
	Time mytime5 = { mytime };
	mytime5.Hour = 8;

.d 私有成员

外部无法调用,但是可以被内部的成员函数调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C入门PDF是一种提供初学者学习C语言基础知识的电子文档。C语言被广泛应用于软件开发领域,是一种高级计算机编程语言。学习C语言是许多计算机科学专业学生和编程爱好者的首选。 C入门PDF通常包含基本的C语言语法和常用的编程概念。它们可能包括变量、数据类型、运算符、条件语句、循环语句和函数等基础知识的介绍。此外,它们还可能包含一些简单的编程示例和练习,帮助初学者理解并应用所学知识。 通过学习C入门PDF,初学者可以逐步建立对C语言的理解和掌握。他们可以学习如何编写简单的C程序,并逐渐提高他们的编程能力。C语言是一种结构化的编程语言,因此通过学习C语言,初学者也可以培养良好的编程习惯和逻辑思维能力。 对于初学者来说,C入门PDF是一个方便而有效的学习工具。他们可以根据自己的进度和需要,在任何时间和地点学习C语言。通过自主学习,初学者可以在自己的学习节奏和理解能力下进行学习,不受时间和空间的限制。 C入门PDF是许多在线教育平台、编程社区和计算机科学教育机构提供的免费资源。因此,初学者可以轻松获取这些资源,并根据自己的学习需求选择最适合自己的C入门PDF。 总之,C入门PDF是一种方便且有效的学习资源,可以帮助初学者掌握C语言的基础知识和编程技能。通过学习C语言,初学者可以为自己的编程之路打下坚实的基础。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值