A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FFunction%2Fobject_parameters</id>
		<title>C++ Tutorial/Function/object parameters - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B_Tutorial%2FFunction%2Fobject_parameters"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Function/object_parameters&amp;action=history"/>
		<updated>2026-04-17T17:51:39Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Function/object_parameters&amp;diff=2479&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Function/object_parameters&amp;diff=2479&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Function/object_parameters&amp;diff=2480&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B_Tutorial/Function/object_parameters&amp;diff=2480&amp;oldid=prev"/>
				<updated>2010-05-25T10:29:49Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Constructors, destructors, and passing objects==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt; &lt;br /&gt;
using namespace std; &lt;br /&gt;
 &lt;br /&gt;
class MyClass { &lt;br /&gt;
  int val; &lt;br /&gt;
public: &lt;br /&gt;
  MyClass(int i) { &lt;br /&gt;
    val = i; &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Inside constructor\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  ~MyClass() { cout &amp;lt;&amp;lt; &amp;quot;Destructing\n&amp;quot;; } &lt;br /&gt;
  int getI() { return val; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
void display(MyClass ob) &lt;br /&gt;
{ &lt;br /&gt;
  cout &amp;lt;&amp;lt; ob.getI() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
int main() &lt;br /&gt;
{ &lt;br /&gt;
  MyClass a(10); &lt;br /&gt;
 &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Before calling display().\n&amp;quot;; &lt;br /&gt;
  display(a); &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;After display() returns.\n&amp;quot;; &lt;br /&gt;
 &lt;br /&gt;
  return 0; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Inside constructor&lt;br /&gt;
Before calling display().&lt;br /&gt;
10&lt;br /&gt;
Destructing&lt;br /&gt;
After display() returns.&lt;br /&gt;
Destructing&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Copy constructor invoked when passing an object to a function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt; &lt;br /&gt;
using namespace std; &lt;br /&gt;
 &lt;br /&gt;
class MyClass { &lt;br /&gt;
  int val; &lt;br /&gt;
  int copynumber; &lt;br /&gt;
public: &lt;br /&gt;
  MyClass(int i) { &lt;br /&gt;
    val = i; &lt;br /&gt;
    copynumber = 0; &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Inside normal constructor\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  // Copy constructor &lt;br /&gt;
  MyClass(const MyClass &amp;amp;o) { &lt;br /&gt;
    val = o.val; &lt;br /&gt;
    copynumber = o.copynumber + 1; &lt;br /&gt;
    cout &amp;lt;&amp;lt; &amp;quot;Inside copy constructor.\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  ~MyClass() { &lt;br /&gt;
     if(copynumber == 0) &lt;br /&gt;
       cout &amp;lt;&amp;lt; &amp;quot;Destructing original.\n&amp;quot;; &lt;br /&gt;
     else &lt;br /&gt;
       cout &amp;lt;&amp;lt; &amp;quot;Destructing copy &amp;quot; &amp;lt;&amp;lt; &lt;br /&gt;
                copynumber &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  int getVal() { return val; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
void display(MyClass ob) &lt;br /&gt;
{ &lt;br /&gt;
  cout &amp;lt;&amp;lt; ob.getVal() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
int main() &lt;br /&gt;
{ &lt;br /&gt;
  MyClass a(10); &lt;br /&gt;
 &lt;br /&gt;
  display(a); &lt;br /&gt;
 &lt;br /&gt;
  return 0; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Inside normal constructor&lt;br /&gt;
Inside copy constructor.&lt;br /&gt;
10&lt;br /&gt;
Destructing copy 1&lt;br /&gt;
Destructing original.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Data slicing with passing by value==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 class Animal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     Animal():itsAge(1) {  }&lt;br /&gt;
     ~Animal() { }&lt;br /&gt;
     virtual void Speak() const { std::cout &amp;lt;&amp;lt; &amp;quot;Animal speak!\n&amp;quot;; }&lt;br /&gt;
 protected:&lt;br /&gt;
     int itsAge;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Dog : public Animal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     void Speak()const { std::cout &amp;lt;&amp;lt; &amp;quot;Woof!\n&amp;quot;; }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 class Cat : public Animal&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     void Speak()const { std::cout &amp;lt;&amp;lt; &amp;quot;Meow!\n&amp;quot;; }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 void ValueFunction (Animal);&lt;br /&gt;
 void PtrFunction   (Animal*);&lt;br /&gt;
 void RefFunction   (Animal&amp;amp;);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
     Animal* ptr=0;&lt;br /&gt;
     int choice;&lt;br /&gt;
     ptr = new Dog;&lt;br /&gt;
     PtrFunction(ptr);&lt;br /&gt;
     RefFunction(*ptr);&lt;br /&gt;
     ValueFunction(*ptr);&lt;br /&gt;
     ptr = new Cat;&lt;br /&gt;
     PtrFunction(ptr);&lt;br /&gt;
     RefFunction(*ptr);&lt;br /&gt;
     ValueFunction(*ptr);&lt;br /&gt;
&lt;br /&gt;
     ptr = new Animal;&lt;br /&gt;
     PtrFunction(ptr);&lt;br /&gt;
     RefFunction(*ptr);&lt;br /&gt;
     ValueFunction(*ptr);&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void ValueFunction (Animal AnimalValue)&lt;br /&gt;
 {&lt;br /&gt;
     AnimalValue.Speak();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void PtrFunction (Animal * pAnimal)&lt;br /&gt;
 {&lt;br /&gt;
     pAnimal-&amp;gt;Speak();&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void RefFunction (Animal &amp;amp; rAnimal)&lt;br /&gt;
 {&lt;br /&gt;
     rAnimal.Speak();&lt;br /&gt;
 }&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Woof!&lt;br /&gt;
Woof!&lt;br /&gt;
Animal speak!&lt;br /&gt;
Meow!&lt;br /&gt;
Meow!&lt;br /&gt;
Animal speak!&lt;br /&gt;
Animal speak!&lt;br /&gt;
Animal speak!&lt;br /&gt;
Animal speak!&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pass an object to a function==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt; &lt;br /&gt;
using namespace std; &lt;br /&gt;
 &lt;br /&gt;
class MyClass { &lt;br /&gt;
  int i; &lt;br /&gt;
public: &lt;br /&gt;
  MyClass(int i) { &lt;br /&gt;
    i = i; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  int getI() { return i; } &lt;br /&gt;
  void setI(int i) { i = i; } &lt;br /&gt;
}; &lt;br /&gt;
 &lt;br /&gt;
void display(MyClass ob) &lt;br /&gt;
{ &lt;br /&gt;
  cout &amp;lt;&amp;lt; ob.getI() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
void change(MyClass ob) &lt;br /&gt;
{ &lt;br /&gt;
  ob.setI(100); // no effect on argument &lt;br /&gt;
 &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Value of ob inside change(): &amp;quot;; &lt;br /&gt;
  display(ob); &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
int main() &lt;br /&gt;
{ &lt;br /&gt;
  MyClass a(10); &lt;br /&gt;
 &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Value of a before calling change(): &amp;quot;; &lt;br /&gt;
  display(a); &lt;br /&gt;
 &lt;br /&gt;
  change(a); &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Value of a after calling change(): &amp;quot;; &lt;br /&gt;
  display(a); &lt;br /&gt;
 &lt;br /&gt;
  return 0; &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Value of a before calling change(): 2&lt;br /&gt;
Value of ob inside change(): 2&lt;br /&gt;
Value of a after calling change(): 2&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Passing Objects to Functions==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
using namespace std;&lt;br /&gt;
   &lt;br /&gt;
class myclass {&lt;br /&gt;
  int i;&lt;br /&gt;
public:&lt;br /&gt;
  myclass(int n);&lt;br /&gt;
  ~myclass();&lt;br /&gt;
  void set_i(int n) { i=n; }&lt;br /&gt;
  int get_i() { return i; }&lt;br /&gt;
};&lt;br /&gt;
   &lt;br /&gt;
myclass::myclass(int n)&lt;br /&gt;
{&lt;br /&gt;
  i = n;&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Constructing &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
myclass::~myclass()&lt;br /&gt;
{&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;Destroying &amp;quot; &amp;lt;&amp;lt; i &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
void f(myclass ob);&lt;br /&gt;
   &lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  myclass o(1);&lt;br /&gt;
   &lt;br /&gt;
  f(o);&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;This is i in main: &amp;quot;;&lt;br /&gt;
  cout &amp;lt;&amp;lt; o.get_i() &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
   &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
void f(myclass ob)&lt;br /&gt;
{&lt;br /&gt;
  ob.set_i(2);&lt;br /&gt;
   &lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;This is local i: &amp;quot; &amp;lt;&amp;lt; ob.get_i();&lt;br /&gt;
  cout &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Passing pointers to objects==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 class MyClass&lt;br /&gt;
 {&lt;br /&gt;
 public:&lt;br /&gt;
     MyClass ();                    // constructor&lt;br /&gt;
     MyClass(MyClass&amp;amp;);             // copy constructor&lt;br /&gt;
     ~MyClass();                    // destructor&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 MyClass::MyClass()&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Constructor...\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 MyClass::MyClass(MyClass&amp;amp;)&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Copy Constructor...\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 MyClass::~MyClass()&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Destructor...\n&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 MyClass FunctionOne (MyClass obj);&lt;br /&gt;
 MyClass* FunctionTwo (MyClass *obj);&lt;br /&gt;
 &lt;br /&gt;
 int main()&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Making an object...\n&amp;quot;;&lt;br /&gt;
     MyClass myObject;&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Calling FunctionOne...\n&amp;quot;;&lt;br /&gt;
     FunctionOne(myObject);&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Calling FunctionTwo...\n&amp;quot;;&lt;br /&gt;
     FunctionTwo(&amp;amp;myObject);&lt;br /&gt;
     return 0;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // FunctionOne, passes by value&lt;br /&gt;
 MyClass FunctionOne(MyClass obj)&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Function One. Returning...\n&amp;quot;;&lt;br /&gt;
     return obj;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // functionTwo, passes by reference&lt;br /&gt;
 MyClass* FunctionTwo (MyClass  *obj)&lt;br /&gt;
 {&lt;br /&gt;
     std::cout &amp;lt;&amp;lt; &amp;quot;Function Two. Returning...\n&amp;quot;;&lt;br /&gt;
     return obj;&lt;br /&gt;
 }&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Making an object...&lt;br /&gt;
Constructor...&lt;br /&gt;
Calling FunctionOne...&lt;br /&gt;
Copy Constructor...&lt;br /&gt;
Function One. Returning...&lt;br /&gt;
Copy Constructor...&lt;br /&gt;
Destructor...&lt;br /&gt;
Destructor...&lt;br /&gt;
Calling FunctionTwo...&lt;br /&gt;
Function Two. Returning...&lt;br /&gt;
Destructor...&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>