You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Method-Modifiers.html 4.8KB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Copyright (C) 1992-2020 Free Software Foundation, Inc.
  4. Contributed by Cygnus Support. Written by Julia Menapace, Jim Kingdon,
  5. and David MacKenzie.
  6. Permission is granted to copy, distribute and/or modify this document
  7. under the terms of the GNU Free Documentation License, Version 1.3 or
  8. any later version published by the Free Software Foundation; with no
  9. Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
  10. Texts. A copy of the license is included in the section entitled "GNU
  11. Free Documentation License". -->
  12. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  13. <head>
  14. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  15. <title>Method Modifiers (STABS)</title>
  16. <meta name="description" content="Method Modifiers (STABS)">
  17. <meta name="keywords" content="Method Modifiers (STABS)">
  18. <meta name="resource-type" content="document">
  19. <meta name="distribution" content="global">
  20. <meta name="Generator" content="makeinfo">
  21. <link href="index.html#Top" rel="start" title="Top">
  22. <link href="Symbol-Types-Index.html#Symbol-Types-Index" rel="index" title="Symbol Types Index">
  23. <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
  24. <link href="Cplusplus.html#Cplusplus" rel="up" title="Cplusplus">
  25. <link href="Virtual-Methods.html#Virtual-Methods" rel="next" title="Virtual Methods">
  26. <link href="Protections.html#Protections" rel="prev" title="Protections">
  27. <style type="text/css">
  28. <!--
  29. a.summary-letter {text-decoration: none}
  30. blockquote.indentedblock {margin-right: 0em}
  31. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  32. blockquote.smallquotation {font-size: smaller}
  33. div.display {margin-left: 3.2em}
  34. div.example {margin-left: 3.2em}
  35. div.lisp {margin-left: 3.2em}
  36. div.smalldisplay {margin-left: 3.2em}
  37. div.smallexample {margin-left: 3.2em}
  38. div.smalllisp {margin-left: 3.2em}
  39. kbd {font-style: oblique}
  40. pre.display {font-family: inherit}
  41. pre.format {font-family: inherit}
  42. pre.menu-comment {font-family: serif}
  43. pre.menu-preformatted {font-family: serif}
  44. pre.smalldisplay {font-family: inherit; font-size: smaller}
  45. pre.smallexample {font-size: smaller}
  46. pre.smallformat {font-family: inherit; font-size: smaller}
  47. pre.smalllisp {font-size: smaller}
  48. span.nolinebreak {white-space: nowrap}
  49. span.roman {font-family: initial; font-weight: normal}
  50. span.sansserif {font-family: sans-serif; font-weight: normal}
  51. ul.no-bullet {list-style: none}
  52. -->
  53. </style>
  54. </head>
  55. <body lang="en">
  56. <a name="Method-Modifiers"></a>
  57. <div class="header">
  58. <p>
  59. Next: <a href="Virtual-Methods.html#Virtual-Methods" accesskey="n" rel="next">Virtual Methods</a>, Previous: <a href="Protections.html#Protections" accesskey="p" rel="prev">Protections</a>, Up: <a href="Cplusplus.html#Cplusplus" accesskey="u" rel="up">Cplusplus</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Symbol-Types-Index.html#Symbol-Types-Index" title="Index" rel="index">Index</a>]</p>
  60. </div>
  61. <hr>
  62. <a name="Method-Modifiers-_0028const_002c-volatile_002c-const-volatile_0029"></a>
  63. <h3 class="section">8.10 Method Modifiers (<code>const</code>, <code>volatile</code>, <code>const volatile</code>)</h3>
  64. <p>&lt;&lt; based on a6.C &gt;&gt;
  65. </p>
  66. <p>In the class example described above all the methods have the normal
  67. modifier. This method modifier information is located just after the
  68. protection information for the method. This field has four possible
  69. character values. Normal methods use &lsquo;<samp>A</samp>&rsquo;, const methods use
  70. &lsquo;<samp>B</samp>&rsquo;, volatile methods use &lsquo;<samp>C</samp>&rsquo;, and const volatile methods use
  71. &lsquo;<samp>D</samp>&rsquo;. Consider the class definition below:
  72. </p>
  73. <div class="example">
  74. <pre class="example">class A {
  75. public:
  76. int ConstMeth (int arg) const { return arg; };
  77. char VolatileMeth (char arg) volatile { return arg; };
  78. float ConstVolMeth (float arg) const volatile {return arg; };
  79. };
  80. </pre></div>
  81. <p>This class is described by the following stab:
  82. </p>
  83. <div class="display">
  84. <pre class="display">.stabs &quot;class(A):sym_desc(struct)type_def(20)=type_desc(struct)struct_bytes(1)
  85. meth_name(ConstMeth)::type_def(21)sym_desc(method)
  86. returning(int);:arg(int);protection(public)modifier(const)virtual(no);
  87. meth_name(VolatileMeth)::type_def(22)=sym_desc(method)
  88. returning(char);:arg(char);protection(public)modifier(volatile)virt(no)
  89. meth_name(ConstVolMeth)::type_def(23)=sym_desc(method)
  90. returning(float);:arg(float);protection(public)modifier(const volatile)
  91. virtual(no);;&quot;, &hellip;
  92. </pre></div>
  93. <div class="example">
  94. <pre class="example">.stabs &quot;A:T20=s1ConstMeth::21=##1;:i;2B.;VolatileMeth::22=##2;:c;2C.;
  95. ConstVolMeth::23=##12;:f;2D.;;&quot;,128,0,0,0
  96. </pre></div>
  97. </body>
  98. </html>