zoukankan      html  css  js  c++  java
  • 结构体作为对象的属性

    //  结构体作为对象的属性
    /*
     合理的设计一个”学生“类
     学生有* 姓名* 生日两个属性和说出自己姓名生日方法
     要求利用设计的学生类创建学生对象,并说出自己的姓名和年龄
     
     描述学生类
     
     事物名称: 学生(Student)
     属性:姓名(name), 生日(birthday)
     行为:说出字节姓名和生日(say)
     */
    #import <Foundation/Foundation.h>
    
    //typedef <#existing#> <#new#>;
    typedef struct { // 省略结构体名称,起别名
        int year;
        int month;
        int day;
    } Date;
    
    @interface Student : NSObject
    {
        @public
        NSString *_name;
        Date _date;
    }
    - (void)say;
    @end
    
    @implementation Student
    
    - (void)say{
    //    NSLog(@"我的名字是%@,我的生日是:%i年%i月%i日",_name,_date->year,_date->month,_date->day);
        //member reference type'Date' is not a pointer;maybe you meant to use '.'?
    //    为什么会犯这样的错误?把常规的访问结构体内部和指针方式访问搞混了
    //    通过指针访问结构体需要定义一个结构体的指针然后取得结构体的地址然后赋值
        NSLog(@"我的名字是%@,我的生日是:%i年%i月%i日",_name,_date.year,_date.month,_date.day);
    }
    
    @end
    
    int main(int argc, const char * argv[]) {
    //    创建学生对象
        Student *ps = [Student new];
    //    初始化学生对象
        ps->_name=@"草泥马";
        
    //    初始化对象的结构体属性三种方法
    //    1⃣️
    //    ps->_date=(Date){1991,10,11};
    //    2⃣️
    //    Date date={1990,1,1};
    //    ps->_date=date;
    //    3⃣️
        ps->_date.year=1989;
        ps->_date.month=3;
        ps->_date.day=3;
        
    //    调用自己说的方法
        [ps say];
        
        return 0;
    }
  • 相关阅读:
    uva400 Unix ls
    cf641 div2 abcd
    cf619 div2 abcd
    cf620 div2 abcde
    atc160
    cf638 div2 abcd
    CodeCraft-20(Div. 2 abcd
    cf Round 621 abcd
    luogu1941 飞扬的小鸟
    UVA1601 The Morning afther Halloween
  • 原文地址:https://www.cnblogs.com/imChay/p/5590218.html
Copyright © 2011-2022 走看看