C++/Function/Basics
Содержание
A C++ program with several functions
#include <iostream>
using namespace std;
void line(), message();
int main()
{
cout << "The program starts in main()." << endl;
line();
message();
line();
cout << "At the end of main()." << endl;
return 0;
}
void line()
{
cout << "line();" << endl;
}
void message()
{
cout << "In function message()." << endl;
}
Another example of a conversion function
#include <iostream>
using namespace std;
class Power {
double b;
int e;
double val;
public:
Power(double base, int exp);
Power operator+(Power o) {
double base;
int exp;
base = b + o.b;
exp = e + o.e;
Power temp(base, exp);
return temp;
}
operator double() { return val; } // convert to double
};
Power::Power(double base, int exp)
{
b = base;
e = exp;
val = 1;
if(exp==0)
return;
for( ; exp>0; exp--)
val = val * b;
}
int main()
{
Power x(4.0, 2);
double a;
a = x; // convert to double
cout << x + 100.2; // convert x to double and add 100.2
cout << "\n";
Power y(3.3, 3), z(0, 0);
z = x + y; // no conversion
a = z; // convert to double
cout << a;
return 0;
}
Class as a return type
#include <iostream>
using namespace std;
class myclass {
public:
myclass();
myclass(const myclass &o);
myclass f();
};
myclass::myclass()
{
cout << "Constructing normally\n";
}
myclass::myclass(const myclass &o)
{
cout << "Constructing copy\n";
}
myclass myclass::f()
{
myclass temp;
return temp;
}
int main()
{
myclass obj;
obj = obj.f();
return 0;
}
Computes the factorial of an integer iteratively: a loop, and recursively
#include <iostream>
#include <iomanip>
using namespace std;
#define LENGTH 20
long double iterativeFunction(unsigned int n); // Iterative solution
long double recursiveFunction(unsigned int n); // Recursive solution
int main()
{
unsigned int n;
cout << fixed << setprecision(0);
cout << setw(10) << "n" << setw(30) << "Factorial of n"
<< " (Iterative solution)\n" << endl;
for( n = 0; n <= LENGTH; ++n)
cout << setw(10) << n << setw(30) << iterativeFunction(n)
<< endl;
cout << "Go on with <return>";
cin.get();
cout << setw(10) << "n" << setw(30) << "Factorial of n"
<< " (Recursive solution)\n" << endl;
for( n = 0; n <= LENGTH; ++n)
cout << setw(10) << n << setw(30) << recursiveFunction(n)
<< endl;
cout << endl;
return 0;
}
long double iterativeFunction(unsigned int n) // Iterative solution.
{
long double result = 1.0;
for( unsigned int i = 2; i <= n; ++i)
result *= i;
return result;
}
long double recursiveFunction(unsigned int n) // Recursive solution.
{
if( n <= 1)
return 1.0;
else
return recursiveFunction(n-1) * n;
}
Throwing an exception from a function
#include <iostream>
using namespace std;
void myFunction(int test)
{
cout << "Inside myFunction, test is: " << test << endl;
if(test) throw test;
}
int main()
{
cout << "start\n";
try { // start a try block
cout << "Inside try block\n";
myFunction(0);
myFunction(1);
myFunction(2);
} catch (int i) { // catch an error
cout << "Caught an exception -- value is: ";
cout << i << endl;
}
cout << "end";
return 0;
}