C++学习第三天——类的组合+友元函数+常类型+动态内存分配

类和组合

对象数组和对象指针

可以进行定义对象数组对象指针
一维对象数组定义方法
类名 数组名[下标表达式];
类名 数组名[下标表达式]={类名(…),类名(…)};
//第一种默认调用系统给的无参构造函数
//第二种通过后面{}决定

class A
{
   int x,y;
public:
   A(){
   x=0,y=0;}
   A(int x,int j=0){
   x=i,y=j;}
 };
 如果这样定义的话
 A obj[4]={
   1,2};
 //如何传递?obj[0]出态为x=1,y=0
            //obj[1]初态为x=2,y=0

对象数组成员的引用同样注意限制性
————————————————————
对象指针
对象所占据的内存空间用于存放数据成员,对象的存储空间的起始地址就是对象的指针!!! 定义方法
类名 *对象指针名
访问方法

(*对象指针名).成员名
对象指针名->成员名
!!但要注意访问是否合法还要保证访问成员是公有成员!!

所有指针必须先赋值才能被使用

!!对象指针也是指针 和其他指针使用方法是一样的!!

this指针----自引用指针
①当对象被赋初值之后,就会出现一个隐藏的指针,这个对象的this指针就??指向!!内存中保存该对象数据的存储空间的首地址
②另外在类的成员函数中是可以使用这个this 指针的

class CMyclass
{
    private:
    CMyclass *this;
    ...
   public:
    CMyClass(){
   ...}
    ...
 };

一般不使用 使用的话就是需要在成员函数的实现中访问this所指的对象本身,而不是其各个成员
比较不错的例子 理解this指针

#include<iostream.h>
class ThisSample
{
    int n;
public:
   void SetValue(int m){
   n=m;}
   void AddValue(int m)
   {
   ThisSample q;//函数内部临时对象????
    //???
   q.n=n+m;//n相当于this->n n+m赋给了q.n
   *this=q;//把q复制给this指针所指的那个对象
   //没调用复制构造函数
   }
   void Display()
   {
   cout<<"n="<<n<<endl;}
 void main()
 {
    ThisSample s;
   s.SetValue(10);
   s.Display();
   s.AddValue(5);
   s.Display();
  }

————————————————————
类的组合
就是类中内嵌对象成员
面向对象:复杂对象进行分解抽象,复杂对象分解为简单对象的组合。

对象成员的初始化
成员初始化列表:
例 CPoint::CPoint(int xx,int yy):x(xx),y(yy)
{cout<<“constructor called”;}

!调用构造函数时先执行成员初始化列表 再按顺序执行构造函数体内语句
!与说明普通对象不同,在说明对象成员时并没有创建该对象,等创建外层类的实例时会为对象成员分配内存初始化
!类中有对象成员,先执行所有对象成员构造函数,再执行当前类的构造函数体

代码理解:

class CPoint
{
   private: 
int x,y;
 public:
CPoint(int i=<
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值