C++语言--类与对象(一)

类声明

//	类是一种用户自定义类型,声明形式:
class 类名称
{
	public:
		公有成员(外部接口)
	private:
		私有成员
	protected:
		保护成员
};

公有、私有、保护成员

1.在关键字public后面声明,它们是类与外部的接口,任何外部函数都可以访问公有类型数据和函数。
2.在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。
3.在关键字protected后面声明,与private类似,其差别表现在继承与派生时对派生类的影响不同。

数据抽象和封装

1.数据抽象是一种依赖于接口和实现分离的编程(和设计)技术。类设计者必须关心类是如何实现的,但使用该类的程序员不必了解这些细节。使用者只要抽象地考虑该类型做什么,而不必具体地考虑该类如何工作。

2.封装是一项将低层次的元素组合起来形成新的、高层次的实体的技术。函数是封装的一种形式:函数所执行的细节行为被封装在函数这个更大的实体中。被封装的元素隐藏了它们的实现细节------可以调用函数,但是不能直接访问函数所执行的语句。同样地,类也是一个封装的实体:它代表若干成员的聚集,设计良好的类隐藏了类实现的细节。

内联成员函数

内联函数

1.当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等,这些工作需要时间和空间的开销。有些情况下,函数本身功能简单,但使用频率却很高,程序频繁调用该函数所化费的时间却很多,从而使得程序执行效率降低。
2.为了提高效率,一个解决办法就是不使用函数,直接将函数的代码嵌入到函数中。但这个办法也有缺点,一是相同的代码重复书写,二是程序可读性往往没有使用函数的好。
3.为了协调好效率和可读性之间的矛盾,C++提供了另一种方法,即定义内联函数,方法是在定义函数时用修饰词inline。
4.内联函数,编译器展开,不涉及函数调用开销。

内联函数与带参数宏的区别

inline int max(int a, int b)
{
	return a>b ? a : b;
}

#define MAX(a,b) (a)>(b) ? (a) : (b)

1.内联函数调用时,要求实参和形参的类型一致,另外内联函数会先对实参表达式进行求值,然后传递给形参;而宏调用时只用实参简单地替换形参。
2.内联函数是在编译的时候、在调用的地方将代码展开的;而宏则是在预处理时进行替换的。
3.在C++中建议采用inline函数来替换带参数的宏。

新的类型转换运算符

1.const_cast<T>(expr)
2.static_cast<T>(expr)
3.reinterpret_cast<T>(expr)
4.dynamic_cast<T>(expr)
	执行”安全向下“转型操作,也就是说支持运行时识别指针或所指向的对象,这是唯一一个无法用旧式语法来进行的转型操作。

成员函数的重载及其缺省参数

类与结构体

class与struct的区别:在未指定访问权限时,class默认的是私有的,struct默认是公有的。

隐含的this指针

1.成员函数是只读的代码,由所有对象共享,成员函数有一个隐含的附加形参,即指向该对象的指针,这个隐含的形参叫做this指针
2.使用this指针保证了每个对象可以拥有不同的数据成员,但处理这些成员的代码可以被所有对象共享。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值