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