c++之类的设计

c++学习之设计类
(1)设计类


 1   一些类涉及规则
 类的声明放在.h文件,实现放在.cpp文件里,inline类型的成员函数可以在.h文件后面实现,通常把短小不常修改的

函数设计为inline类型
 为了避免多重包含,可以使用
 #ifndef DATE_H
 #define DATE_H
 //THE contents of date.h
 #endif
  和语言本身自带的数据类型(int)不同,类也是一种用户自定义的数据类型
 类成员可见性的规定,数据成员通常private以确保封装要求,提供getdata和setdata函数来给予外部访问成员
 成员函数一般要求公有
 类对象的作用域:auto对象作用域开始于定义的地方,结束于该语句块
 extern对象在程序运行的时候存在,在程序结束时消失
 static对象的作用域和anto一样,但是生存时间和extern 一样
 一般都要初始化类的成员数据,具有默认参数的构造函数box::box(int ht = 1){height = ht;},这个比较常用
 
 2      类的转换


 (1)转换改造函数
 date::date(char s)
 {
  da = s;//int da
  //在构造函数中进行数据类型的转换,初始化类的成员数据
 }
 (2)成员转换函数date::operator long()
 {
  //当将data类型的转换成long 类型的时候,编译器隐式调用该函数
  //和c++内建数据类型的double转换成float一样的道理
  //还可以进行类对象之间的转换
 }
 date::date(const &jd)
 {
  //转换构造函数
 }
 date::operator customdate()
 {
  //将date转换成customdate类型
  //需要一个引用对象作为参数
 }
 转换发生的情形:
 函数参数
 初始化
 返回值
 表达式语句
 说明类可以通过转换参与表达式运算
 
 3               this指针


 当类的某个非静态成员函数执行时,就会存在this指针,他指向该成员函数的对象。this指针总是作为隐含参数传递成员函数,
 当程序调用每个对象的成员函数时,编译器就会把该对象的地址加到参数列表。对任何成员的调用都隐式的使用了this指针。
 data& date:: operator= (const date& dt)
 {
  if (this != &dt)//确保对象不会自己给自己赋值
  {
  开始赋值;
  delete m//m是指针类型;把原来的指针释放
  if(dt.m != 0){m = new char;//判断指针哟没有初始化
  strcpy(m,dt.m);//新的指针
  }else m = 0;
  }
  return *this
 }
 
 4     重载赋值转换函数
 当类中存在指针或者引用时,用=进行类对象的赋值可能会导致两个类对象共用一个数据成员,当一个类对象
 不在作用域时,会调用析构函数删除分配的空间,会导致另一个对象的成员指向空。所以有必要重载赋值运算符
 void date:: operator= (const date& dt)
 {
  if (this != &dt)//确保对象不会自己给自己赋值
  {
  开始赋值;
  delete m//m是指针类型;把原来的指针释放
  if(dt.m != 0){m = new char;//判断指针哟没有初始化
  strcpy(m,dt.m);//新的指针
  }else m = 0;
  }
 }


5      静态成员
 即使没有任何实例,静态成员也是存在的,他相当于一个全局变量,所有该类的实例都可以调用他。静态成员函数通常
 是用在需要访问静态成员,他没有this指针,无法访问非静态成员。如果一个静态成员是公有的,那么在整个他的作用域都可
 以访问他,而且不需要类的实例的存在。访问方式:类名::成员名
 

6    复制构造函数
 date::date(const date& dt)
 {
  //开始赋值
 }
 
 如果类成员有引用类型的,那么在构造函数中必须对他进行初始化。
 常量对象不可以调用非常量函数,因为编译器只看函数的声明。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值