<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
const_cast [C++ Reference]
</title>
<meta name="generator" content="DokuWiki Release 2009-12-25c "Lemming"" />
<meta name="robots" content="index,follow" />
<meta name="date" content="2009-03-25T01:39:58-0700" />
<meta name="keywords" content="keywords,const_cast" />
<link rel="search" type="application/opensearchdescription+xml" href="/wiki/lib/exe/opensearch.php" title="C++ Reference" />
<link rel="start" href="/wiki/" />
<link rel="contents" href="/wiki/keywords/const_cast?do=index" title="Index" />
<link rel="alternate" type="application/rss+xml" title="Recent Changes" href="/wiki/feed.php" />
<link rel="alternate" type="application/rss+xml" title="Current Namespace" href="/wiki/feed.php?mode=list&ns=keywords" />
<link rel="edit" title="Edit this page" href="/wiki/keywords/const_cast?do=edit" />
<link rel="alternate" type="text/html" title="Plain HTML" href="/wiki/_export/xhtml/keywords/const_cast" />
<link rel="alternate" type="text/plain" title="Wiki Markup" href="/wiki/_export/raw/keywords/const_cast" />
<link rel="canonical" href="http://www.cppreference.com/wiki/keywords/const_cast" />
<link rel="stylesheet" media="all" type="text/css" href="/wiki/lib/exe/css.php?s=all&t=custom1&tseed=1272971091" />
<link rel="stylesheet" media="screen" type="text/css" href="/wiki/lib/exe/css.php?t=custom1&tseed=1272971091" />
<link rel="stylesheet" media="print" type="text/css" href="/wiki/lib/exe/css.php?s=print&t=custom1&tseed=1272971091" />
<script type="text/javascript" charset="utf-8" ><!--//--><![CDATA[//><!--
var NS='keywords';var JSINFO = {"id":"keywords:const_cast","namespace":"keywords"};
//--><!]]></script>
<script type="text/javascript" charset="utf-8" src="/wiki/lib/exe/js.php?tseed=1272971091" ></script>
<link rel="shortcut icon" href="/wiki/lib/tpl/custom1/images/favicon.png" />
</head>
<body>
<div class="dokuwiki">
<div class="stylehead">
<div class="breadcrumbs">
<span class="bchead">You are here: </span><a href="../start.html" title="start">C++ Reference</a> » <a href="../keywords/start.html" title="keywords:start">C++ Keywords</a> » <a href="../keywords/const_cast.html" title="keywords:const_cast">const_cast</a> </div>
</div>
<div class="page">
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2828341-1";
urchinTracker();
</script>
<!-- wikipage start -->
<h2><a name="const_cast" id="const_cast">const_cast</a></h2>
<div class="level2">
<p>
Syntax:
</p>
<pre class="c code c++" style="font-family:monospace;"> TYPE const_cast<span class="sy0"><</span>TYPE<span class="sy0">></span> <span class="br0">(</span>object<span class="br0">)</span><span class="sy0">;</span></pre>
<p>
The const_cast keyword can be used to remove the <a href="../keywords/const.html" class="wikilink1" title="keywords:const">const</a> or <a href="../keywords/volatile.html" class="wikilink1" title="keywords:volatile">volatile</a> property from an object. The target data type must be the same as the source type, except (of course) that the target type doesn't have to have the same const qualifier. The type TYPE must be a pointer or reference type.
</p>
<p>
For example, the following code uses const_cast to remove the <a href="../keywords/const.html" class="wikilink1" title="keywords:const">const</a> qualifier from a object:
</p>
<pre class="c code c++" style="font-family:monospace;">class Foo <span class="br0">{</span>
public<span class="sy0">:</span>
<span class="kw4">void</span> func<span class="br0">(</span><span class="br0">)</span> <span class="br0">{</span><span class="br0">}</span> <span class="co1">// a non-const member function</span>
<span class="br0">}</span><span class="sy0">;</span>
<span class="kw4">void</span> someFunction<span class="br0">(</span> <span class="kw4">const</span> Foo<span class="sy0">&</span> f <span class="br0">)</span> <span class="br0">{</span>
f.<span class="me1">func</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// compile error: cannot call a non-const</span>
<span class="co1">// function on a const reference</span>
Foo <span class="sy0">&</span>fRef <span class="sy0">=</span> const_cast<span class="sy0"><</span>Foo<span class="sy0">&></span><span class="br0">(</span>f<span class="br0">)</span><span class="sy0">;</span>
fRef.<span class="me1">func</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span> <span class="co1">// okay</span>
<span class="br0">}</span></pre>
<p>
Related Topics: <a href="../keywords/const.html" class="wikilink1" title="keywords:const">const</a>, <a href="../keywords/dynamic_cast.html" class="wikilink1" title="keywords:dynamic_cast">dynamic_cast</a>, <a href="../keywords/reinterpret_cast.html" class="wikilink1" title="keywords:reinterpret_cast">reinterpret_cast</a>, <a href="../keywords/static_cast.html" class="wikilink1" title="keywords:static_cast">static_cast</a>, <a href="../keywords/casting_comparison.html" class="wikilink1" title="keywords:casting_comparison">A comparison of the C++ casting operators</a>
</p>
</div>
<!-- wikipage stop -->
</div>
<div class="clearer"> </div>
<div class="stylefoot">
<div class="meta">
<div class="user">
</div>
<!--
<div class="doc">
keywords/const_cast.txt · Last modified: 03/25/2009 01:39 by spoon </div>
-->
</div>
</div></div></body>
</html>