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;
    }
  • 相关阅读:
    CF 444B(DZY Loves FFT-时间复杂度)
    摆弄【Nhibernate 协会制图--导乐陪伴分娩】
    固定的报文统计报告的规定
    CSS——(2)与标准流盒模型
    自动复制转换StringBuffer
    IM信息网
    Oracle Redo Log
    【转载】有哪些省时小技巧,是每个Linux用户都应该知道的
    Linux snmp
    MySQL zabbix
  • 原文地址:https://www.cnblogs.com/imChay/p/5590218.html
Copyright © 2011-2022 走看看