c++类

C++
类与对象
一丶类的定义
1丶定义
  C++允许用户以类的形式自定义数据类型,反映待解决问题中的各种概念,以更自然的方式编写程序。
2丶数据成员与成员函数
  类与结构体类似
  结构体内的函数被称为成员函数,结构体中的数据则称为数据成员
  扩展的结构体被称为类,结构体类型的变量被称为对象
  成员函数直接在类内定义,也可以在类外定义
3丶数据成员的类内初始化
  没有初始值的成员将被默认初始化
  数据成员类内初始值只能放在等号“=”右边,或者放在花括号“{}”里,不能使用圆括号“()”
二丶访问控制和封装
1丶使用关键字public、private 和protected
   public:
公有成员声明;
private:
私有成员声明;
protected:
被保护成员声明;
(1)public
   public成员在程序的任何函数或类中都可以被访问
(2)private
  成员只能由类自己的成员函数或友元访问
(3)protected
   protected 成员可以在派生类中访问
2丶struct的默认类型为pubilc
class定义的类的默认类型为private
三丶this指针
1丶定义
每个成员函数都有一个隐含的参数,指向接收消息的对象,称为this指针
2丶this指针是一个常量,含有当前实施调用的对象的地址
不能改变this指针的值,也不能取this指针的地址
3丶用途
区分与数据成员同名的变量 
返回当前对象
取得当前对象地址
三丶友元
1丶访问类的私有数据的方法
(1)将real和imaginary声明为public成员
  缺点:其他函数也可以访问这些成员,破坏类的封装性
(2)friend(友元)
C++引入了friend关键字,如果想让非成员函数访问一个类中的私有数据,应该在类中将这个函数声明为friend
一个类的友元可以访问该类的私有数据
注意:友元必须在被访问的类中声明
2丶不推荐使用友元
友元会破坏类的封装性,增加类之间的耦合度
四丶构造函数和析构函数
1丶构造函数
(1)
构造函数在创建对象时被自动调用,负责初始化对象
构造函数的名字和类名字相同,它没有返回类型
是没有返回类型,不是返回void 类型
构造函数可以重载
(2)初始化列表
类中有些成员不能使用赋值的方式提供初始值
引用成员,const 数据成员,类类型的数据成员
针对这种情况的特殊语法称为构造函数初始化列表
成员1(初始值1)[,成员2(初始值2),…]
初始化列表位于构造函数的参数表之后,函数体之前
构造函数(参数表) : 初始化列表 { 函数体 }
(3)委托构造函数
语法形式:
ClassName(参数表):ClassName(参数表){函数体}
五丶const成员
1丶const数据成员
const 可以限定类中的数据成员,描述对象中的常量
创建对象时初始化其中的const 数据成员,之后const 成员的值在对象的整个生存期中都不会改变
2丶const成员函数
声明const成员函数的语法形式
返回类型 成员函数名(参数表) const;
定义const成员函数的语法形式
返回类型 成员函数名(参数表) const { 函数体 }
注意:对于在类外定义的const成员函数,必须在它的定义和声明中同时指定关键字const
    只有声明为const 的成员函数才可以被const 对象调用
六丶static成员
1丶static的数据成员
static数据成员被当作该类类型的全局变量
(1)初始化
static数据成员属于类,不属于某个特定对象,因而不能在构造函数中初始化
static数据成员在类定义之外初始化,使用类名字限定
int Object::count = 0;

可以用static const定义类中的常量
static const 数据成员在类外初始化
(2)访问
在类的成员函数中可以直接访问static数据成员
在非成员函数中通过两种方式访问static数据成员
1成员访问运算符“.”或“->”  2类名限定的静态成员名
2丶成员函数
声明语法是在类定义中的函数声明前加static 关键字
在类外定义时不需要加关键字static
注意:static成员函数中不能访问非static数据成员,也不能调用非static成员函数


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值