友元类

class TV
{
public:
    friend class Remote;                     ----1,
    void setTVvalue(){state = 0;}
private:
    int state;
    int volume;
    int maxchannel;
};
class Remote
{
private:
    int mode;
public:
    void changeTVvalue(TV & t){t.state = 1;}  // if no 1,../Chapt9.cpp:18:6: error: ‘int TV::state’ is private../Chapt9.cpp:27:31: error: within this context
};
int main()

{

    Remote a;
    TV b;
    a.changeTVvalue(b);

    return 0;

}


gcc -S Chapt9.c  //error 

gcc -S test.c        //

gcc -S Chapt9.cpp -lstdc++  //ok

g++ -S Chapt9.cpp

    .file    "Chapt9.cpp"
    .section    .text._ZN6Remote13changeTVvalueER2TV,"axG",@progbits,_ZN6Remote13changeTVvalueER2TV,comdat
    .align 2
    .weak    _ZN6Remote13changeTVvalueER2TV
    .type    _ZN6Remote13changeTVvalueER2TV, @function
_ZN6Remote13changeTVvalueER2TV:
.LFB1:
    .cfi_startproc
    pushl    %ebp
    .cfi_def_cfa_offset 8
    .cfi_offset 5, -8
    movl    %esp, %ebp
    .cfi_def_cfa_register 5
    movl    12(%ebp), %eax
    movl    $1, (%eax)
    popl    %ebp
    .cfi_def_cfa 4, 4
    .cfi_restore 5
    ret
    .cfi_endproc
.LFE1:
    .size    _ZN6Remote13changeTVvalueER2TV, .-_ZN6Remote13changeTVvalueER2TV
    .text
    .globl    main
    .type    main, @function
main:
.LFB2:
    .cfi_startproc
    pushl    %ebp
    .cfi_def_cfa_offset 8
    .cfi_offset 5, -8
    movl    %esp, %ebp
    .cfi_def_cfa_register 5
    andl    $-16, %esp
    subl    $32, %esp
    leal    16(%esp), %eax
    movl    %eax, 4(%esp)
    leal    28(%esp), %eax
    movl    %eax, (%esp)
    call    _ZN6Remote13changeTVvalueER2TV
    movl    $0, %eax
    leave
    .cfi_restore 5
    .cfi_def_cfa 4, 4
    ret
    .cfi_endproc
.LFE2:
    .size    main, .-main
    .ident    "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3"
    .section    .note.GNU-stack,"",@progbits



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值