मंगलवार, 22 फ़रवरी 2011

c++ FAQ

What are containers in C++ and in Object Oriented Programming ? Which objects are available as containers ?
A container is an object that can store other objects as its elements. However all the objects stored in a container should be of the
same data type. E.g. array is a container as it allows you to store multiple objects. However there are a few problems with arrays like
an array can’t allow you to store an element anywhere in the middle of the array, an array cannot grow dynamically to append new
elements at the end of the array. A sequence container is the one which allows storing elements of the same type in a linear fashion.
There are three objects which are sequence containers: 1. Vector: an array like container that allows storing elements of the same
type and provides random access to these elements. Insertions and deletions at the end of the vector are efficient.2. List: provides
efficient insertions and deletions at any position within a list.3. dequeue: double ended queue with constant time insertions and
deletions both at the end and the beginning of the queue.
===================
Explain the Concept of Data Abstraction and Data Encapsulation in Object Oriented Programming (OOPS)
Data encapsulation: the wrapping up of data and functions that act upon that data in a single unit is termed as data encapsulation. It
binds together both the data and code and thus keeps both safe from the outside world. The data and the code to manipulate the data
are combined in such a way that a black box is created which is self contained and modular. This box is termed as a class in object
oriented terminology. Within a class the code or the data can be private or public. If it is private then these cannot be accessed by the
outside world whereas public means that the code and the data is accessible to everyone. Typically the data is private and the
methods are an interface to the private elements of the object. Data abstraction: The term data abstraction is similar to data
encapsulation. All the data and the methods that make sense to the objects of a class that is been designed need to be a part of the
class. All unnecessary details should be left behind. E.g. when designing a class to represent a student we need data elements such
as student no, student name, marks, grade, etc. If we now design a class representing a cricket player we need details like no of
centuries, striking rate, no of matches played, etc. It will not make sense to add the player’s marks, grades which are applicable to a
student class to this player class. The classes designed in object oriented language are also termed as User defined data types
(UDT).
========================
What are classes ? How are they defined ?
A class in an object oriented language is a User defined data type (UDT). A class is made up of member variables (data) and
member functions (interface).
A class is created or declared using the class keyword. It defines a new type to represent a real life entity. This type is composed of
data that is private to the class and accessible through the public member functions of the class.
As an analogy consider a home. A home is like an object that has a state (whether lights are on, number of walls, temperature, etc)
and it provides services (like buttons to switch off the lights, a thermostat that controls the temperature). This blueprint for a home is a
class since it defines the characteristics of a group of such houses.
Syntactically a class structure is similar to a structure except that everything in a class by default is made private whereas everything
is public in a structure by default.
E.g. class student{ public: //public interface private://private implementation}
================================
What are objects ? What is common between all objects of a class ?
Objects are physical or conceptual things that are found in the universe. Objects are thought of having state associated with them.
E.g. state of an account would be the account balance; the state of a clock would be the time.
In object oriented terminology a class is just a plain structure and an object is an instance of a structure. A class is a blueprint that
does not take memory however when a class is instantiated by creating an object of that class then each such object takes up
memory space.
All objects of a class have identical structure however each object will have its own private data. E.g. a class student will have multiple
instances of students where each student instance will have distinct values for their attributes.
Each object will have its own memory with its data however all the objects of a class share the member functions of a class.
E.g. we will define a class called account and create two objects of this class.
class Account
{
private:
double account_balance;
int account_no;
public:
double calculateInterest();
void deposit(double);
double withdraw();
}
==============================
State all the class access modifiers and explain each one of them
C++ has three access modifiers namely public, private and protected.
Public: a public modifier means that the data or the functions of a class are accessible by any program. There are no restrictions in
accessing public members of a class. Ideally all the functions that allow manipulating or accessing the class data are made public.
Private: the private keyword means that the data and member functions that are private cannot be accessed by other programs. They
are accessible only within the class or struct in which they are declared. If one tries to access the private members of a class it results
in a compile time error. Encapsulation is possible due to the private access modifier.
Protected: this access modifier plays a key role in inheritance. This keyword gives a protected access to the member variables and
functions which means that these are accessible from within the class as well as any classes that are derived from the class that
declared this member. However the protected members are not accessible to the any other programs.
=====================
What are Vectors in C++(Object Oriented Programming) and how are they used ?
Vector is a part of the sequential container which holds an ordered collection of elements of one type. A vector holds all these
elements in a contiguous area of memory. Random access of elements is efficient however insertion of elements at any other position
other than the end of the vector is inefficient since each element to the right of the element to be inserted has to be shifted one by one
which leads to inefficiency. Similarly deletion of an element besides the last element is inefficient as well.
The vector is a part of the std namespace and one must include #include header in order to use a vector.
#include
using namespace std;
int main()
{
vector v1;
v1.push_back(1);
v1.push_back(2);
}
The function capacity () returns the total number of elements that the vector can hold and size () returns the number of elements that
are currently stored in the vector
=====================
What are Iterators in C++ and Object Oriented Programming ? Explain where we use them
Iterators allow the traversal of a container object. They provide a generic interface to navigate a container without having to know the
actual type of its elements. Several member functions of containers like begin () and end () return a pointer to iterators. Begin ()
returns a pointer to the beginning of a container and end returns a pointer one position past the last valid element of a container. This
element past the last element marks the end of the container like a \0 is used to mark the end of strings.
The functions begin () and end () come in two flavors: const and non const. The non cons version returns non const iterator that
enables a user to modify the value of its container while const iterators cannot modify its container.
e.g. vector v1;
vector ::iterator p = v.begin ();
====================
What are the Algorithms namespace used for ?
Algorithms are an important part of STL. These are generic algorithms that can be applied to containers. The algorithms are divided
into three categories:
1. Non-modifying sequence operations: these algorithms do not directly modify the object they work on. These are basically the
search algorithms, checking for equality and counting. E.g. find () algorithm is used to locate an element within a sequence.
2. Mutations sequence operations: these algorithms modify the object that they operate on. These are operations such as copy,
fill, replace and transform. E.g. copy () algorithm is used to copy a sequence of objects to a target object.
3. sorting algorithms: these algorithms provide sorting and merging sequences and they operate on sorted sequences. E.g. sort
(), partial_sort (), binary_search (), etc.
==============================
What are Enumerations in C++ and Object Oriented Programming ? Explain with an example ?
An enumeration is a type that can hold a set of constant values that are defined by the user. Once you define an enumeration you can
use it like integer types.E.g. enum {OFF, ON};The enum defines two integer constants called enumerators and these constants are
assigned values by default. The value assigned to OFF = 0 and ON = 1. The above is an unnamed enumeration, however an enum
can be named. E.g. enum STATE {OFF, ON};Each enumeration is a distinct type and the type of the enumeration is the enumerator.
For example OFF is of type STATE. An enumerator can optionally be initialized by a constant expression of integral type. E.g. enum
{WHITE = 3, BLACK = 5}; A value of an integral type can be converter to an enumeration type. This needs to be done explicitly. The
results are undefined unless the value is within the range of the enumeration.E.g. enum COLORS {RED = 1; BLUE = 3, WHITE =
7};COLORS c1 = COLORS (5); All enumerators are converted to integral type for any arithmetic operation.
==============================
What are References in C++ and OOPS ? How are they used ?
A reference means an alias. It is an alternative name to an object. An object can have multiple references. However the most
important use of references is to pass arguments to function and return values for functions as well as for overloaded operators. E.g.
consider a reference for a variable x created as x1.int x = 10;int &x1 = x; To make sure that the reference denotes an object it has to
be initialized. Once initialized the value of a reference cannot be changed. In order to get a pointer to the object denoted by the
reference x1 we can write it as &x1; One of the important uses of reference is to pass an object to a function as a reference so that
the function can change the value of that object. e.g. void swap (int &a, int &b){ int tmp = a; a = b; b = a;}void main (){ int x =
10, y = 12; swap (x, y );} Since x and y are passed by reference to the function swap their values get actually swapped.
============================
Explain the Rules for using Default Arguments with an example in C++.
A default argument is used by functions to free the programmer from specifying values which can be set to default by the function.
E.g. consider a function for printing an integer. A user can be given an option to decide of what base the integer should be printed
however in most cases it will be decimal. E.g. void print (int value, int base = 10); //here the base is set to 10 by defaultThe above
function can be called as: print (10); //here default base will be taken as 10 print (10, 8); a function can specify a default argument
for one or more of its parameters at the initialization time within the parameter list. A function that has a default parameter can be
invoked with or without that parameter. If it gets invoked without the parameter then the default value applies to that parameter.
Arguments to the call are resolved by position and hence the default arguments can be specified as trailing arguments only.e.g. void
display (int a, int b = 0, int c = 9); // correct void display (int a = 0, int b, int c = 9); //wrong void display (int a = 0, int b = 9, int c);
//wrong The default arguments are specified in the function declaration and not in the function definition.
==================================
What do you mean by “Pointers to Function”? What are Function Pointers ?
We can use a function in two ways: one is to invoke a function and the second is to obtain the address of a function. This address that
is obtained is called as pointer to the function and is used to invoke the function.E.g. we have a function named display and we will
invoke this function using a pointer to this function as follow:void display (string s) /* … */void (*ptr)(string); //pointer to a function ptr =
&display; //assign the address of the function ptr (“hello”); // call the function In the above example the compiler will discover that ptr is
a pointer to the function display and calls the function. The dereferencing of a pointer to a function using a * is optional. Similarly it is
not necessary to use & to get the address to the pointer. As pointers to functions have argument types declared just like the functions
themselves, therefore in pointer assignments the complete function type must exactly match. A function name does not constitute its
type. A function type is determined by its return type and its parameter list
======================
What are NameSpaces in C++ ? How do we use namespaces in C++ ?
The purpose of namespaces is to reduce the name clashes that occur with multiple independently developed libraries. It is used to
package names, improve program readability and reduce the name clashes in the global namespace.
e.g. namespace mynamespace{ class Stack { }}The class Stack has to be referred as mynamespace::Stack.
In this way namespace facilitate building large systems by partitioning names into logical groups. Java has a similar concept called
packages. One can access the names within the namespace in the following ways: a. Use the scope resolution operator to prefix
the object declared in the namespace with the name of the namespace. e.g. mynamespace::Stack *s = new
mynamespace::Stack (); b. Using directive E.g. using namespace Stack; Stack *s = new Stack ();
===============
What is the Exception Handling mechanism in C++ ? What is Try and Catch in C++ ?
The ability to gracefully handle an error or an exception is known as exception handling. C++ has built exception handling techniques
which allows the program to handle and exceptions and deal with them.
- try block: the code that is likely to throw an exception should be enclosed in a try lock. This allows the function to recover from
this exception. If a code called from a try block cannot throw an exception then there is no need for the try block.
- Catch block: the exception that is thrown in the try block has to be caught in the catch block. There can be multiple catch blocks
for a try block however there cannot be any code between try and catch block. Once an exception is caught and if the function can
recover from that error then it can either continue normal processing or restart the try block by putting the try block in a loop. If
required the catch block can also propagate the exception to the calling function either by throwing the same exception object or
throwing a different exception object.
e.g.
try { File x (filename); } catch (BadFileName& e) { cout << " second(): " << e.what() << ": Partial recovery\n"; throw; } catch
(AccessViolation& e) { cout << " second(): " << e.what() << ": Full recovery\n"; }
* Login or register to post comments
Re: What is the Exception Handling mechanism in C++ ? What is Tr
Submitted by Anonymous on Wed, 2007-07-11 16:19.
Exception handling in C++ is complex and subtle. It is not as trivial as the above would make you believe.
If you are interested in learning, go and read Meyers, Sutter/GOTW et al.
For a proper treatment, you need to discuss (at a bare minimum):
- What happens to x when an exception is thrown.
- What happens if the destructor of File throws.
- Why you want to catch by reference.
- What can throw (answer: a lot more than you think).
- RAII.
===================================
What is Operator Overloading in C++ ?
The ability to overload operators is one of the most powerful features of C++. The operators are overloaded so that they can perform
special operations on the user defined classes. Say for example you create a class representing complex number. We can overload
the + operator to add two complex numbers. When an operator is overloaded it original meaning is not lost in fact the type of objects
that the operator can operate expands. Operators are overloaded by creating operator functions. It is created using the keyword
operator. These functions can either be member of a class or then they have to be friend functions. Syntax: returntype classname::
operator#(arg-list) { } E.g. class Complex { private: float real; float imaginary; public: Complex operator+ (Complex); };
//overloaded + operator for class Complex Complex Complex::operator+ (Complex c) { Complex tmp; tmp.real = this.real + c.real;
tmp.imaginary = this.imaginary + c.imaginary; return temp; } The only C++ operators that cannot be overloaded are dot (.), .*, ?:,
sizeof, typeid and scope resolution operator (::).
========================
What are Friend Functions and Friend Classes in C++ ?
A friend can be a function, another class or individual member function of a class. With the help of a friend function it is possible to
grant a non member function access to the private members of a class using a friend. A friend function has all access to all the
private and protected members of the class for which it is the friend. To declare a friend function includes the function prototype within
the class preceding it with the keyword friend. When a friend function is called it need to be qualified by the object name as it is not a
member function of the class. E.g. class Complex { private: float real; float imaginary; public: friend Complex operator+ (Complex,
Complex); };//overloaded + operator for class Complex Complex operator+ (Complex c, Complex d) { Complex tmp; tmp.real = d.real
+ c.real; tmp.imaginary = d.imaginary + c.imaginary; return temp; } To call the function: int main (){ Complex a, b, c; a = b + c; //this
will be called as operator+(b, c)} Friend classes are used when two or more classes are designed to work together and need access
to each other’s implementation. E.g. a class DataBaseCursor may want more privileges to the class Database. E.g. class
DatabaseCursor; class Database { //member variable and function declarations friend DatabaseCursor; };
=============================
What are Constructors and Destructors in C++ ?
A constructor constructs an object i.e. it initializes the objects internal data members as well as it may allocate resource (memory,
files, sockets, etc). The constructor has the same name as the class name and cannot have a return type not even void. A constructor
can take multiple arguments as its parameters. A class can have multiple constructors i.e. a constructor can be overloaded.
Whenever an object of a class is created it calls a constructor by default which is responsible for initializing the object. By default
every class has a default constructor which is a constructor with no arguments. However once you provide a constructor to a class
then the default constructor does not exist. e.g. class Stack{ int size;int top; int arr []; Stack(int a) //constructor of the class { size = a;
arr = new int[size]; }}; The destructor is the last member function called in the lifetime of a class object. Its job is to free the resources
that an object is holding. A class can have no more than a single destructor. The name of the destructor is ~ classname (). Like a
constructor, a destructor cannot have a void return type. e.g. ~Stack () //destructor { delete [] arr; }
======================
What is Inheritance ? How is a Class Inherited in C++ ?
Inheritance is one of the most important principles of object oriented language. Using inheritance one can create a class that can
have traits common to a set of related items. This class is then inherited by other classes each adding things are specific to them.
The class that is inherited is called the base class and the class that inherits from it is called as the derived class. When a class
inherits a base class, then all the members of the base class become members of the derived class. E.g. class derived-class-name::
access base-class-name{ //body of class}; The access of the members in the base class by derived class depends on the access
parameter. The access specifier must either be private, public or protected. If one doesn’t provide an access specifier then it is taken
as private by default. When access specifier is private then these members remain private to base class and the derived class cannot
access them. When access specifier is public then all the public members of a base class become public members of the derived
class and all the protected members of the base class become protected in the derived class. On using a protected access specifier
all public and protected members of the base class become protected members of the derived class.
================================
What are Virtual Functions ? Why do we need Virtual Functions? Explain with an example.
A function that is defined in a base class but overridden by the derived class is called a virtual function. To create virtual functions
precede the function declaration in the base class with the keyword virtual. When a class containing a virtual function is inherited the
derived class overrides the virtual function with its own definition. Virtual functions are like member functions however what makes
them different is the capability to support run time polymorphism when accessed via a pointer. A base class pointer can point to an
object of a derived class. When a base class pointer points to an object of a derived class that contains a virtual function, C++
determines which function version to call based on the type of object pointed by the base class pointer. This is runtime polymorphism
as it can be determined at run time. In this way when different objects are pointed to then different versions of virtual functions are
executed. Whenever a virtual function is defined all aspects of its prototype should match. Also virtual functions should be non static
members of the class and they cannot be friend functions too. E.g. class base { public: virtual void display (); }; class derived: public{
public: virtual void display ();};base *p, b;derived d1, d2;p = &b;p->display (); //calls base class functionp = &d1;p->display (); //calls
derived class function
======================
What are Templates in C++ ? How are Templates declared and used ?
Many data structures and algorithms can be defined independently of the type of data they manipulate. A template allows the
separation of the type dependent part from the type independent part. This results in a significant amount of code reusability.
Templates can be class templates or function templates. A class template is used for creating a class in which one more values are
parameterized. The syntax of a class template is:
template class class-name{ ...};
A class template can also have multiple parameters.
template class class-name{ ...};
Example -
template class Array{ private: T *arr []; public: Array (int size = 10); };template Array::Array(int
size){ arr = new T[size];}
Create an Array object as: Array a; The function template is also written using the keyword template.
E.g. template class void push (T &element) { arr[top] = elemen
========================
What is Polymorphism ? How is Polymorphism achieved in C++ ?
Polymorphism is one of the most important principle of object oriented language. Polymorphism means many forms i.e. one interface
multiple methods. The specific method to call depends on the nature of the situation. No matter what type of car it is the driving
mechanism is the same. For example, you might have a program that defines three different types of stacks. One stack is used for
integer values, one for character values, and one for floating-point values. Because of polymorphism, you can define one set of
names, push() and pop() , that can be used for all three stacks. In your program you will create three specific versions of these
functions, one for each type of stack, but names of the functions will be the same. The compiler will automatically select the right
function based upon the data being stored. Thus, the interface to a stack—the functions push() and pop() —are the same no matter
which type of stack is being used. C++ supports both run time and compile time polymorphism. Function overloading is a form of
compile time polymorphism while dynamic binding is a form of runtime polymorphism.
===============
What are the Standard Exceptions in C++ ?
C++ defined a hierarchy of standard exceptions that are thrown at runtime whenever an abnormal condition takes place. These
exceptions are derived from std::exception class defined in the header. Since there is a common base class of all these exceptions it
enables the application to catch these exceptions in a single catch statement. E.g. catch (std::exception &e){//code to handle the
exception} Some of the standard exceptions that are built in the language are: - std::bad_alloc: thrown by operator new -
std::bad_cast: as a result of dynamic_cast - std::bad_typeid: as a result of operator typeid - std::bad_exception: Whenever you want
to catch all exceptions then the exception parameter in the catch block should be an ellipsis. E.g. catch (…){ //this block will catch all
exceptions}
==============
What is Multiple Inheritance in C++ ? Explain with an example
It is possible for a derived class to inherit more than a single base class. This is referred as multiple inheritance. The class inherits
from multiple base classes where these classes are comma separated. Each listed base class must specify its own access level.
E.g.
class base1
{}
;
class base2
{}
;
class derived: public base1, public base2
{
};
The base class constructors are invoked in the declaration order within the class derivation list. In the above example the constructor
for base1 will be called first followed by the base2 constructor. Similarly the order of destructor is reverse of the constructor order.
If a class inherits from one or more base classes which themselves inherit from a common base class then it can lead to problems. In
such case one should use virtual inheritance. Under virtual inheritance only a single shared base class object is inherited regardless
of how many times the base class occurs in the derivation hierarchy.
E.g.
class derived: public virtual base1, public virtual base2
{}
;
==================
What is a Copy Constructor in C++ ? Give an example
Copy constructor is a type of constructor which constructs an object by copying the state from another object of the same class.
Whenever an object is copied, another object is created and in this process the copy constructor gets called. If the class of the object
being copied is x, the copy constructor’s signature is usually x::x (const x&).
Let’s take an example to illustrate this:
class Complex
{ int real, img;
public:
Complex (int, int);
Complex (const Complex& source); //copy constructor
};Complex:: Complex (const Complex& source)
{ this.real =
source.real;
this.img = source.img;
}
main ()
{
Complex a (2, 3);
Complex b = a; // this invokes the copy constructor
}
A copy constructor is called whenever an object is passed by value, returned by value or explicitly copied.
==================================
What is Function Overloading in C++ ?
Function overloading is the process of using the same name for two or more functions. However each function will be different in
terms of either different types of parameters or a different number of parameters. It is only through these differences that the compiler
knows which function to call in any given situation. Even if the number of parameters are same and types are same but they are
written in a different order then these functions will still be considered different. The return type parameter does not hold any
relevance to make two functions distinct. E.g. void display (int a);void display (string str); Both the above functions have the same
name but different parameters. So when a function display (2) is called the compiler calls the first function and when the argument
passed to display is a string then the second version is invoked.E.g. int display (int a );void display (int a); In the above example the
compiler will generate a compile time error as the return types are insufficient to overload functions
====================================
What are Pointers in C++ (Object Oriented Programming) ?
Pointers are used to store memory address values of objects. C++ defines a special address-of operator that when applied to an
object returns that object’s address value. E.g. int *pint; //this defines a pointer variableIn order store the address of the variable ‘j’ into
pint one should assign the address of j into pint variable as follows:pint = &j; // assigning the address of variable j into pointer pint In
order to access the actual object pint addresses we must first dereference pint using the dereference operator (*). *pint = *pint + 1; //
this statement will increment the value pint points to by 1 The type of the pointer variable should be the same as the variable whose
address it is used to hold. E.g. you cannot define a pointer variable of type float and use it to assign the address of a variable of type
integer
========================
What are volatile variables ? Explain Volatile variables
A variable is declared as volatile if its value can possibly be changed in ways outside either the control or detection of the compiler.
For example a variable that is updated by the system clock. Certain optimizations ordinarily performed by a compiler should therefore
not be applied to objects the programmer specifies as volatile. The volatile qualifier is used in much the same way as is the const
qualifier as an additional modifier to a type.E.g. volatile int count_value; The purpose of defining a variable as volatile is to inform the
compiler that the variable can change in ways undetectable by the compiler and hence the compiler should not perform any kind of
optimizations on these variables.
============================
What is the Difference between Overloaded Functions and Overridden Functions ?
In C++, overloading is simply the use of the same function identifier for different functions declared in the same scope.
E.g. void display (int);void display (string);
The above two functions are clearly overloaded. The compiler will distinguish among them by the actual argument used in the call to
display.
Overriding can occur only in the presence of a base class virtual function. Overriding has nothing whatsoever to do with overloading.
A nonvirtual base class function cannot be overridden, only hidden. In overriding the function prototype in the derived class has to be
exactly the same as the one in the base class
=============================
What are Inline Functions ? When are Inline Functions used ?
The idea behind inline functions is to insert the code of a called function at the point where the function is called. It is useful to
distinguish between "inline," a keyword qualifier that is simply a request to the compiler, and "inlined," which refers to actual inline
expansion of the function. A function can be decorated with the inline keyword either in the class definition or in its own definition if the
definition physically occurs before the function is invoked. The compiler does not promise that an inline function will be inlined, and the
details of when/when not are compiler-dependent. On the other hand, any function that is defined within the class body will be treated
implicitly as an inline function with or without the explicit inline keyword. Inline code is faster than a function call for two reasons. First,
a CALL instruction takes time to execute. Second, if there are arguments to pass, these have to be placed on the stack, which also
takes time
============================
What are Mutable and Const in C++ ?
Class member functions may be declared as const, which causes them to be treated as a const pointer. Thus, that function cannot
modify the object that invokes it. Also, a const object may not invoke a non-const member function. However, a const member
function can be called by either const or non-const objects. Sometimes there will be one or more members of a class that you want a
const function to be able to modify even though you don't want the function to be able to modify any of its other members. You can
accomplish this through the use of mutable. It overrides constness. That is, a mutable member can be modified by a const member
function. E.g. class MyClass{ int i; mutable int j; Public: void setValues const () { i = 10; //wrong j = 15; //correct }};
===========================
What is ‘this’ Pointer (object) in C++
When a member function is called, it is automatically passed an implicit argument that is a pointer to the invoking object (that is, the
object on which the function is called).This pointer is called this.Within a member function, the members of a class can be accessed
directly, withoutany object or class qualification. The this pointer points to the object that invoked the member function. Also the this
pointer is automatically passed to all member functions. Another thing to note is that the friend functions are not members of a class
and, therefore, are not passed a this pointer. Second, static member functions do not have a this pointer. e.g. class Stack { int top; int
size; Stack (int top, int size) { this.top = top; this.size = size; }};
========================
What is Scope Resolution Operator in C++?
There are two used of the scope resolution operator in C++. The first use being that a scope resolution operator is used to unhide the
global variable that might have got hidden by the local variables. Hence in order to access the hidden global variable one needs to
prefix the variable name with the scope resolution operator (::). e.g. int i = 10; int main () { int i = 20; Cout << i; // this prints the value
20 Cout << ::i; // in order to use the global i one needs to prefix it with the scope //resolution operator. } The second use of the
operator is used to access the members declared in class scope. Whenever a scope resolution operator is used the name of the
member that follows the operator is looked up in the scope of the class with the name that appears before the operator.
==================================
What is Scope Resolution Operator in C++?
There are two used of the scope resolution operator in C++. The first use being that a scope resolution operator is used to unhide the
global variable that might have got hidden by the local variables. Hence in order to access the hidden global variable one needs to
prefix the variable name with the scope resolution operator (::). e.g. int i = 10; int main () { int i = 20; Cout << i; // this prints the value
20 Cout << ::i; // in order to use the global i one needs to prefix it with the scope //resolution operator. } The second use of the
operator is used to access the members declared in class scope. Whenever a scope resolution operator is used the name of the
member that follows the operator is looked up in the scope of the class with the name that appears before the operator.
===================
What are Const Member Functions in C++ ?
There can be two cases in which a member function can be declared as a const function: whenever the member function wants to
guarantee that it won't make any changes to its this object or whenever a caller needs to invoke the member function via a referenceto-
const or pointer-to-const. The compiler wont allow a const member function to change *this or to invoke a non-const member
function for this object. E.g. int getCount() const;int getCount () const{ //function definition}
===========================
Explain Composition in C++ with an example
Composition allows software to be developed by assembling existing components rather than creating new ones. Composition is also
sometimes called as aggregation and defines the process of putting an object inside another object. It models the has-a relationship.
E.g. a class employee can contain an object of type salary which itself is another type of object. e.g.
class Salary{ private: double DA; double HRA; double travelAllowance; double basic salary; public: //member functions};Class
Employee{ private: int empno; Salary salary; //composition: salary object is contained inside employee public: //member functions};
==================
What do you mean by ‘Return by Reference’ in C++ ?
A function can be declared to return a pointer or a reference. When the function is returning a reference, the calling function receives
the lvalue for the variable. The calling function can then modify the variable or take its address.
If the return value is a large class object, using a reference (or pointer) return type is more efficient than returning the class object by
value. In some cases, the compiler can automatically transform a return by value to a return by reference.
E.g.
Complex& compute (Complex c)
{
Complex *tmp = new Complex ();
// …
return tmp;
}However care should be exercised when returning a reference to a local object. The lifetime of the local object terminates with the
termination of the function. The reference is left aliasing undefined memory after the function terminates.
====================
What are static Data and Static Member Functions in C++ ?
Static data members are data and functions that are associated with the class itself, rather than with the objects of the class. For
example a count is needed of how many objects of a particular class type have been created at any one point in the program. A static
data member acts as a global object that belongs to its class type. Unlike other data members where each class object has its own
copy, there is only one copy of a static data member per class type. A static data member is a single, shared object accessible to all
objects of its class type. A data member is made static by prefixing the data member declaration within the class body with the
keyword static or prefixing the function declaration with the keyword static. A static function cannot access any other member
variables of the object. One does not need to create a class object for accessing a static member or a static function; a static function
can be invoked using the class name as class_name::static_member_function. e.g. class ShoppingCart{ private: static int totalItems;
//static data member public: static int getTotalItems (); //static member function};
===========================
What is a Pure Virtual Member Function ?
Whenever a virtual function in a base class is not redefined by the derived class then the version defined in the base class will be
used. However in many cases it may so happen that there can be no meaningful definition of a virtual function within the base class.
Or you may want to ensure that all derived classes override a virtual function. To handle both these cases the solution is a pure virtual
function.
A pure virtual function is a function that has no definition in the base class. The definition of such a function is equal to 0.E.g. void
draw () = 0; // this is a pure virtual function
If a class contains at least one virtual function then that class is called an abstract class and one cannot create an instance of an
abstract class. Also if a class inherits from a class that contains a pure virtual function then the derived class has to provide a
definition for the pure virtual function. Failure to do so will result in an abstract derived class.
==============================
What are Preprocessor Directives ?
The preprocessor directives are instructions to the compiler. All these preprocessor lines begin with a pound (#). They are executed
before the compilation of the code begins. These directives can only span a single line and does not need to end in a semicolon.
The preprocessor contains the following directives:
- #define: this defines an identifier and some value to this identifier. This value can be any character sequence and will be substituted
in the code file for each instance of the corresponding identifier.
e.g. #define MIN 0
- #include: it tells the compiler to link to another source file. The name of the source file can be in angle brackets or double quotes.
e.g. #include
- #error: tells the compiler to stop compilation. Used primarily for debugging purposes.
- #if:
- #elif
- #endif
- #else: The above four directives are conditional directives. They allow you to conditionally include portions of code based on
outcome of a constant expression.
E.g. #if OPTION == 1
//do something
#else
//do something else
#endif
- #ifndef
- #undef: the above indicates conditional compilation dependinf upon if a variable is defined or not defined.
======================================

142 टिप्‍पणियां:

  1. Магазин спортивного питания, официальный интернет-сайт которого доступен по адресу: SportsNutrition-24.Com, реализует огромный выбор спортивного питания, которые принесут пользу и заслуги как профессиональным спортсменам, так и любителям. Интернет-магазин осуществляет свою деятельность большой промежуток времени, предоставляя клиентам со всей России качественное спортивное питание, а также витамины и специальные препараты - Спортивные жиросжигатели. Спортпит представляет собой категорию продуктов, которая призвана не только лишь сделать лучше спортивные достижения, но и положительно влияет на здоровье организма. Схожее питание вводится в повседневный рацион с целью получения микро- и макроэлементов, витаминов, аминокислот и белков, а помимо этого других недостающих веществ. Не секрет, что организм спортсмена в процессе наращивания мышечной массы и адаптации к повышенным нагрузкам, остро нуждается в должном количестве полезных веществ. При этом, даже правильное питание и употребление растительной, а также животной пищи - не гарантирует того, что организм получил нужные аминокислоты либо белки. Чего нельзя сказать о высококачественном питании для спорта. Об наборе товаров Интернет-магазин "SportsNutrition-24.Com" продает качественную продукцию, которая прошла ряд проверок и получила сертификаты качества. Посетив магазин, заказчики смогут получить себе товары из следующих категорий: - L-карнитинг (Л-карнитин) представляет собой вещество, схожее витамину B, синтез которого осуществляется в организме; - гейнеры, представляющие собой, белково-углеводные смеси; - BCAA - средства, содержащие в собственном составе три важнейшие аминокислоты, стимулирующие рост мышечной массы; - протеин - чистый белок, употреблять который вы можете в виде коктейлей; - современные аминокислоты; - а кроме этого ряд прочих товаров (нитробустеры, жиросжигатели, специальные препараты, хондропротекторы, бустеры гормона роста, тестобустеры и многое другое). Об оплате и доставке Интернет-магазин "SportsNutrition-24.Com" предлагает большое обилие товаров, которое в полной мере способно удовлетворить проф и начинающих атлетов, включая любителей. Большой опыт позволил компании наладить связь с наикрупнейшими поставщиками и изготовителями питания для спорта, что позволило сделать политику цен гибкой, а цены - демократичными! К примеру, аминокислоты либо гейнер заказать можно по цене, которая на 10-20% ниже, чем у конкурентов. Оплата возможна как наличным, так и безналичным расчетом. Магазин предлагает широкий выбор способов оплаты, включая оплату разными электронными платежными системами, а также дебетовыми и кредитными картами. Главный кабинет организации размещен в Санкт-Петербурге, но доставка товаров осуществляется во все населенные пункты РФ. Кроме самовывоза, получить товар можно посредством любой транспортной компании, подобрать которую каждый клиент может в личном порядке.

    जवाब देंहटाएं
  2. Номенклатура воздействий, ориентированных на предположение будущего, именуют хиромантия. Магические силы и всевозможные положения предсказания судьбы учеными не установлены, при том различные люди доверяют подобному. Корона любви онлайн гадание - это простой метод предсказать будущее с употреблением каких-либо объектов и приемов.

    जवाब देंहटाएं
  3. большинство сталкиваются с проблемой персонального перевода денежных средств. Работая удаленно, как пример, фрилансером, многочисленные работодателиОплатить скрытный платеж в интернет сети не так уж и просто, вместе с тем, вполне возможно. Есть великое количество порталов, позволяющие перенаправлять средства совершенно без отслеживания https://onion.hydraruzxpnew4auf.com.

    जवाब देंहटाएं
  4. Продвинутые люди берут абсолютно большое число продуктов дистанционно. В маркетплейсе https://hydraclubbioknikokex7njhwuahc2l67lfiz7z36md2jvopda7nchid.onion-a.com выставлен широчайший сортамент товаров любого типа. Смартфоны и даже программный код удобно приобретать в онлайне. Существует конкретная продукция, приобрести которую имеется возможность лишь только онлайн.

    जवाब देंहटाएं
  5. Огромный магазин рубли гидра размещен в черной сфере интернет-сети. Масса магазинов и адекватные цены – это главные положительные нюансы, вследствие чего люди закупляются на ЮнионHYDRA. Hydra RU представляется очень крупным магазином, где реализуют продукты индивидуального назначения.

    जवाब देंहटाएं
  6. Создавать непробиваемую охрану рабочего компа обязательно с подборки проверенного провайдера. Высокоточные файерволы – наилучшая охрана от вторжения злоумышленников в персональную интерактивную сеть. Предприятия, которые предоставляют интернет сообщение, все чаще реализуют в компьютерных машинах мощную оборону от атак злодеев, актуальный перечень можно глянуть на hydra darknet 2022.

    जवाब देंहटाएं
  7. Анонимные приобретения товара – как работать с форумом ЮнионHYDRA в сети даркнет сайт гидра на торе ссылка 2022

    जवाब देंहटाएं
  8. Безымянный вход на маркетплейсе Hydra RU – всевозможные товары по самой выгодной стоимости http://www.pensarepositivo.com/index.php?option=com_kunena&view=topic&catid=3&id=5548&Itemid=141

    जवाब देंहटाएं
  9. Существенный уровень защищенности при покупке на HydraRU http://qa.genexuschina.com/home.php?mod=space&uid=44133

    जवाब देंहटाएं
  10. В интернет-сети невероятно достаточно отличных магазинчиков. Отыскивая в интернет-сети специфические товары, юзер в результате столкнется с проектом Гидра. Реально крупный виртуальный магазин в интернет-сети реализован на платформе http://icrb.minzdravrso.ru/about/forum/user/247186/. Некоторые клиенты маркетплейсов желают скупляться полностью безопасно.

    जवाब देंहटाएं
  11. Повседневное использование плит прочного и легкого материала вполне велико. При выпуске мебели или внутренней облицовки помещений, для выпуска специфических предметов декора, для покрытия кузовов грузовых машин - это лишь малый перечень использования общепризнанного водоустойчивого материала. Фанерную плиту водостойкую фсф фанера длиной 1230 мм применяют не только в кораблестроении.

    जवाब देंहटाएं
  12. Электронные кошельки, по большей части, являются анонимным вариантом выкупа вещей в сети. Необходимо учесть, что во время перемещения денежных средств с электронного кошелька, собственник маркетплейса ссылка на гидру onion не будет видеть персональные данные клиента. При регистрации электронного кошелька элементарно получить минимальный статус без передачи паспорта.

    जवाब देंहटाएं
  13. Для входа на http://komerc.mineralgroup.ru/index.php?subaction=userinfo&user=orecorad требуется установить особый веб-браузер – ТОР. Возможно применить запасную ссылку для осуществления покупок на торговом форуме Hidra. Лишь только при помощи браузера TOP каждый посетитель имеет возможность попасть в даркнет. Владельцы сайта Hydra RU каждый день обновляют актуальные ссылки для верификации на портал.

    जवाब देंहटाएं
  14. Сначала требуется подобрать надлежащий товар в одном из маркетплейсов HydraRU. По ссылке http://www.wychwoodcircle.org/2014/05/an-essay-about-being-human.html напечатан ранг максимально актуальных продавцов платформы. Переведя деньги юзеру дадут координаты о месте, где требуется забрать приобретенный продукт.

    जवाब देंहटाएं
  15. Интернет-сайт Mostbethit.net предлагает гостям поближе ознакомиться с одноименной БК. Интернет-ресурс посвящен описанию основных преимуществ конторы. На проекте пользователи узнают другие принципиально важные моменты - бонусы Mostbet казино за регистрацию. Букмекерская контора для продвижения зеркальных ссылок использует партнерские веб-сайты. Одним из таких ресурсов стал описываемый проект. На страничках портала посетители увидят: - ссылки на зеркала букмекера; - описание БК; - правила работы с конторой; - особенности бонусной политики; - действующие промокоды; - описание способов пополнения баланса; - анализ отзывов о букмекере; - рекомендации для создания аккаунта. Проект предлагает детальный «разбор» оператора ставок. Регистрация для использования не нужна. Гость может свободно переходить по разделам, получать информацию. Языковая доступность - плюс интернет-сайта. Русскоязычная версия открывается по дефлоту. Пользователь может установить любой из 23 доступных языков. Описания на портале детальные. Создатели постарались отметить каждый нюанс. Для улучшения пользовательского восприятия тексты снабжены снимками экрана. Информативность максимальная. Предложенные на проекте ссылки направят игроков на действующее зеркало БК. Это обеспечивает круглосуточный доступ к конторе. Об использовании VPN и прочих методов обхода санкций Роскомнадзора удается забыть. Ссылки на дублирующий сайт Мостбет предложены на каждой странице. Долго искать действующие адреса не придется. Создатели выпустили мобильную версию онлайн-сайта. Проект оптимизирован под девайсы с разной диагональю дисплея. Воспользоваться ресурсом удобно со смартфонов и планшетов. Портал не предлагает спортивных ставок и других азартных утех. Закрыть интернет-сайт регулятор не может. В итоге ресурс обеспечивает круглосуточный доступ к БК.

    जवाब देंहटाएं
  16. Наш веб-сайт рассказывает о новостях бокса и ММА. Читатель узнает о ближайших и прошедших боях - последние новости юфс. Эксперты делятся своими прогнозами на ближайшие действия, проводят разбор окончившихся поединков. Вы можете прочитать интервью со знаменитыми бойцами и их тренерами. Новости ММА, бокса Все предстоящие и прошедшие бои освещаются с подробным разбором, анализом и комментариями спортивных экспертов. Подписавшись на Octagon, вы будете в курсе всех событий в области боевых искусств. Самые интересные, запоминающиеся бои без правил в нашем видеоконтенте. Ознакомьтесь с выводами, разбором захватывающих моментов поединков. Действия, расписание, видео В разделе указано расписание предстоящих боев. Даты, время начала боя вы можете изучить на портале. Предлагается просмотр видео самых увлекательных моментов схваток. Кто не хочет заниматься скучным чтением, может изучить видео прогноз. Легкая, юмористическая подача инфы легко воспринимается и усваивается у подписчиков. Видеоряд постоянно обновляется, предлагается только качественный контент. Биографии, рейтинги боксеров Предоставлены подробные биографии знаменитостей, рейтинг UFC. Вы узнаете, каким был путь героя к покорению Олимпа. Приводятся все весовые показатели спортсменов. Предоставляется информация о самочувствии боксера до и после поединка. Проводится разборка стиля и техники бойцов. Octagon.express предлагает только полностью достоверную информацию. На нашем портале вы ознакомитесь и узнаете о всех тонкостях смешанных боевых искусств. Точные прогнозы, достоверные рейтинги - наше главное кредо. Подписавшись на Telegram канал, вы будете в курсе всех новостей боевых искусств. Все последние бои UFC не ускользнут от вас.

    जवाब देंहटाएं
  17. Наш онлайн-кинотеатр предлагает своим зрителям погрузиться в мир увлекательных турецких сериалов. Онлайн-портал предлагает широкий каталог многосерийных кинофильмов на любой вкус, а основное, они все имеют российское озвучивание. Мы часто пополняем медиатеку, чтобы нашему гостю не приходилось искать новинки на сторонних ресурсах - турецкие сериалы в хорошем качестве. Что предлагает онлайн-кинотеатр своим посетителям? - Полное отсутствие рекламы. Ничего не сможет отвлечь от игры любимых актеров! - Постоянные обновления каталога. Теперь вы не пропустите новинки турецкого кинематографа! - Высококачественное озвучивание - долой русско-турецкий словарь! - Возможность смотреть киносериалы на любых устройствах. Дорога на работу теперь станет увлекательной и интересной! - Удобство просмотра. Наш видеопроигрыватель может остановить только низкая скорость интернет-соединения. Портал турецких сериалов создан специально для тех, кто всегда находится в поиске ресурсов, позволяющих смотреть зарубежные многосерийные киноленты без ограничений. Теперь в вашем распоряжении неограниченное количество кинофильмов с хорошим качеством изображения и русским переводом. Начать просмотр можно любому гостю интернет-сайта без каких-либо ограничений. Но мы все таки рекомендуем вам пройти минутную регистрацию - это позволит вам создавать закладки, оставлять комментарии и обсуждать просмотренные картины с другими гостями портала. А если вы только начали знакомство с турецкими телесериалами, сделать выбор в пользу той либо иной киноленты поможет краткая аннотация. Погрузится в мир головокружительной любви, трагических встреч, кровопролитной вражды и небезопасных игр с самой судьбой поможет наш онлайн-кинотеатр телесериалов из Турции. Позитивного просмотра и положительных эмоций!

    जवाब देंहटाएं
  18. Самым актуальным средством оплат в настоящее время считается криптовалюта. На Гидре получают операции вебмани и даже переводом мобильного телефона. Для оплаты на http://xn-----6kcsebinem2ap2a5ac.xn--p1ai/index.php?subaction=userinfo&user=icytuqy применяют любые виды виртуальных средств. Залив баланса всякого клиента выполняется индивидуально. Онлайн средства зачисляются на аккаунт клиента.

    जवाब देंहटाएं
  19. На платформе http://www.f16f16.com/home.php?mod=space&uid=230388 к тому же присутствует существенное число необходимой информации – свежие обучающие курсы, торенты и маркет с товарами. Доля дистрибутивов или сервисов платные, но большой ассортимент развлечений находятся в формате демо материалов. Портал «Гидра» способствует единомышленникам интернета искать единомышленников в результате общения на привлёкшую их тематику.

    जवाब देंहटाएं
  20. Ставки на спорт с каждым днем становятся все популярнее. У беттеров (игроков на ставках) из Узбекистана появилась возможность делать ставки в государственной валюте на портале - Мостбет ставки в Таджикистане. При регистрации в этой букмекерской конторе пользователь выбирает игровую валюту - узбекский сум, российский рубль, доллар или евро. Всего доступно 19 валют! Играть на веб-сайте сумеют не только лишь жители Узбекистана, ресурс переведен на 25 языков. Ставки на спорт На сайте Мостбет можно сделать ставки на все главные события мира спорта - футбол, баскетбол, хоккей, волейбол, теннис и другие, включая зимние виды спорта, легкую атлетику и единоборства. Для того, что бы делать ставки надо пройти процедуру регистрации, которая займет менее 5 минут. Для клиентов этой букмекерской конторы доступны ставки до матча (прематч) и в режиме реального времени (Live). Казино В Мостбет вы можете так же сыграть в азартные игры - карты, рулетку и слоты (игровые автоматы с вращающимися барабанами). Слотов очень много - на любой вкус, от классических вишенок-клубничек до современного софта с несколькими игровыми полями и бонусными раундами. На Мостбет у игроков единый счет для ставок и для казино. Приложение на портале Мостбет можно загрузить приложение для игры с мобильных устройств - планшетов и телефонов под управлением операционной системы Андроид и iOS. Ссылка для скачивания этих программ располагается в самом верху главной странички. На интернет-сайте вы можете подробно ознакомится с отзывами игроков. В случае если имеется проблема со входом на интернет-сайт, то на странице «Зеркало» можно узнать об альтернативных способах входа, в случаях блокировки ресурса. Для связи с гостями действует онлайн чат, в каком можно задать любой интересующий вопрос техническим консультантам букмекерской конторы.

    जवाब देंहटाएं
  21. Ставки на спорт с каждым днем становятся все популярнее. У беттеров (игроков на ставках) из Узбекистана появилась возможность делать ставки в национальной валюте на портале - Мостбет. При регистрации в этой букмекерской конторе гость выбирает игровую валюту - узбекский сум, российский рубль, доллар или евро. Всего доступно 19 валют! Играть на интернет-сайте смогут не только жители Узбекистана, ресурс переведен на 25 языков. Ставки на спорт На интернет-сайте Мостбет можно сделать ставки на все главные события мира спорта - футбол, баскетбол, хоккей, волейбол, теннис и прочие, включая зимние виды спорта, легкую атлетику и единоборства. Для того, что бы делать ставки нужно пройти функцию регистрации, которая займет не более 5 минут. Для клиентов этой букмекерской конторы доступны ставки до матча (прематч) и в режиме реального времени (Live). Казино В Мостбет можно так же сыграть в азартные игры - карты, рулетку и слоты (игровые автоматы с вращающимися барабанами). Слотов очень много - на любой вкус, от традиционных вишенок-клубничек до современного софта с несколькими игровыми полями и бонусными раундами. На Мостбет у игроков единый счет для ставок и для казино. Приложение на портале Мостбет вы можете загрузить приложение для игры с мобильных устройств - планшетов и смартфонов под управлением операционной системы Андроид и iOS. Ссылка для скачивания этих программ имеется в самом верху главной странички. На веб-сайте можно подробно ознакомится с отзывами игроков. Если имеется проблема со входом на веб-сайт, то на странице «Зеркало» вы можете выяснить об других методах входа, в случае блокировки ресурса. Для связи с гостями работает онлайн чат, в котором вы можете задать любой интересующий вопрос техническим консультантам букмекерской конторы.

    जवाब देंहटाएं
  22. Ставки на спорт с каждым днем становятся все популярнее. У беттеров (игроков на ставках) из Узбекистана появилась возможность делать ставки в государственной валюте на интернет-сайте - получить бонусы БК Mostbet в Узбекистане. При регистрации в этой букмекерской конторе гость выбирает игровую валюту - узбекский сум, русский рубль, доллар или евро. Всего доступно 19 валют! Играть на интернет-сайте сумеют не только лишь жители Узбекистана, ресурс переведен на 25 языков. Ставки на спорт На портале Мостбет вы можете сделать ставки на все главные события мира спорта - футбол, баскетбол, хоккей, волейбол, теннис и прочие, включая зимние виды спорта, легкую атлетику и единоборства. Для того, что бы делать ставки требуется пройти функцию регистрации, которая займет не более 5 минут. Для гостей этой букмекерской конторы доступны ставки до матча (прематч) и в режиме реального времени (Live). Казино В Мостбет вы можете так же сыграть в азартные игры - карты, рулетку и слоты (игровые автоматы с вращающимися барабанами). Слотов очень много - на любой вкус, от традиционных вишенок-клубничек до современного софта с несколькими игровыми полями и бонусными раундами. На Мостбет у игроков единый счет для ставок и для казино. Приложение на интернет-сайте Мостбет можно загрузить приложение для игры с мобильных устройств - планшетов и телефонов под управлением операционной системы Андроид и iOS. Ссылка для скачивания этих программ находится в самом верху главной страницы. На интернет-сайте вы можете ознакомиться с отзывами игроков. В случае если есть проблема со входом на портал, то в разделе «Зеркало» вы можете выяснить об альтернативных способах входа, в случае блокировки ресурса. Для связи с гостями работает онлайн чат, в каком вы можете задать любой интересующий вопрос техническим консультантам букмекерской конторы.

    जवाब देंहटाएं
  23. В последние годы известность зарубежных сериалов и полнометражных фильмов бьет все рейтинги. Но где их вы можете посмотреть? В интернете немало онлайн-кинотеатров, которые предлагают просмотр интересных киноработ от зарубежных кинокомпаний - индийские сериалы. Огромный выбор на любой вкус Но особенно удобно смотреть зарубежные киносериалы и фильмы на сайте Turksezon.net. На этой платформе представлена большущая подборка самых популярных сегодня фильмов. На площадке можно бесплатно смотреть разные проекты: - турецкие; - колумбийские; - индийские; - бразильские. Все зарубежные проекты на площадке идут на российском языке. Привлекательно не только отличное качество перевода, но и высокое разрешение. Многие сериалы и полнометражное кино на сайте идут в формате 720 HD. Широкое разнообразие зарубежных кинофильмов - одна из особенностей онлайн-кинотеатра. На сайте находятся сериалы и полнометражное кино в самых разных жанрах. Здесь непременно найдутся достойные внимания проекты для ценителей драм, фэнтези, боевиков, комедий. Есть огромное количество криминальных, исторических, семейных и военных киноработ. В соответствующих рубриках собраны популярные детективы, триллеры, мелодрамы. Фантастическое кино, в том числе киносериалы, можно получить в отдельном блоке. Такое ранжирование по жанрам очень удобно для выбора подходящего кинофильма. Удобство поиска интересных фильмов Еще одна особенность онлайн-кинотеатра заключается в удобстве поиска увлекательного фильма. Каждый гость может получить кино, которое выпущено в определенный период. На сайте в отдельных блоках собраны проекты, выпущенные с 2016 до 2022 годы соответственно. К каждому кинофильму на площадке идет маленькое, но вместительное описание. Благодаря ему каждый пользователь сумеет выбрать конкретно тот проект, что ему максимально увлекателен.

    जवाब देंहटाएं
  24. Сайт казино Супер Слотс представляет собой хорошее сочетание удобства и функционала. Любой из разделов обустроен опциями, которые будут понятны и полезны любому пользователю - Super Slots бонусы. Веб-сайт предлагает пройти легкую и быструю регистрацию. Это можно сделать 3-мя вариантами: при помощи аккаунта в социальных сетях, номера телефона или электронной почты. После регистрации открывается кошелек для пополнения денежных средств и весь ассортимент слотов. Говоря о доступных слотах, стоит отметить богатую коллекцию онлайн-сайта. Она нередко обновляется и содержит как классические слоты, так и новинки игровой индустрии с необыкновенными правилами. Количество слотов на интернет-сайте превосходит 200 штук. Также на сайте показан сегмент с широкой линейкой призов. К ним относятся депозитные и бездепозитные призы. Депозитные отличаются разнообразными предложениям в форматах приветствия, кэшбека, турниров и розыгрышей. Бездепозитные бонусы представлены фриспинами, которые игроки получают благодаря промокодам. Промокоды, в свою очередь, это бесплатное вознаграждение от интернет-сайта. Они даются бесплатно как новым, так и старым игрокам. Их раздача связана с особенными датами, открытием новейших слотов либо большими турнирами. С помощью промокодов пользователи получают все виды бонусов, представленные на веб-сайте. Более того, интернет-сайт предлагает установить официальное приложение. В соответствующем разделе можно изучить мобильную версию, не уступающую в функционале компьютерной. Стоит упомянуть, что для обеих версий идиентично качественно работает служба поддержки. Интернет-сайт казино информативен и хорошо спроектирован. Он предлагает огромное количество функций и услуг, которые вы можете без усилий найти в несколько кликов. Тут каждый игрок становится счастливым пользователем.

    जवाब देंहटाएं
  25. Эксплуатация ВПН в свою очередь является верным порядком посещения http://www.zpxsxk.com/home.php?mod=space&uid=115714 для совершения конкретных покупок. ВПН способна спрятать точный адрес посетителя, обеспечивая 100% безымянность покупки вещи. Собственные данные клиента автоматически содержатся на удаленном файлсервере HydraRU.

    जवाब देंहटाएं
  26. Хороший показатель защиты при покупке на Hydra гидра сайт hydraruzxpnew4af

    जवाब देंहटाएं
  27. HydraRU числится действительно хорошим онлайн магазином, который предоставляет продукты индивидуального направления. Известный магазин http://fgpclan.free.fr/index.php?file=Members&op=detail&autor=anavyn располагается в защищенной части глобальной сети. Великое множество продавцов и актуальная цена – вот важнейшие позитивные нюансы, благодаря которым люди закупляются на Гидра.

    जवाब देंहटाएं
  28. ВПН дает возможность закрыть первоначальный url клиента, обеспечивая предельную безымянность покупки вещи. Включение ВПН соответственно является надежным шансом вхождения гидра анион зеркало для совершения необходимых закупок. Личные данные пользователя автопилотом остаются на облачном сервере UnionГИДРА.

    जवाब देंहटाएं
  29. Немного архивов или сервисов за деньги, но множество развлечений имеются в качестве демо материалов. На сайте hydra сайт продаж ещё есть огромное число занимательной информации – тематические учебные курсы, игрушки и маркетплейс товаров. Форум Hydra предоставляет перспективу соратникам инета подыскивать друзей за счет дискуссий на определенную их тематику.

    जवाब देंहटाएं
  30. Повышение баланса всякого юзера происходит единолично. Для закупки на hydraclubbioknikokex7njhwuahc2l67lfiz7z36md2jvopda7nchid русская гидра применяют какие угодно виды виртуальных денег. На ГидраРУ принимают выплаты Юманей и даже пополнением на смартфон. Самым востребованным типом оплат сегодня считается токены. Виртуальные денежные средства начисляют в персональном кабинете пользователя.

    जवाब देंहटाएं
  31. Для постоянных клиентов http://www.yingluzhantai.com/home.php?mod=space&uid=103831&do=profile будут акции. Hydra выделяет своим покупателям немыслимый список изделий по максимально низким ценам от производителя. Тот или иной покупатель может зарегистрироваться на сайте и скрыто выполнить дело на потребную сумму. На портале имеется множество производителей качественного продукта.

    जवाब देंहटाएं
  32. Интернет-магазин Hydra предоставляет всякому клиенту прекрасную степень анонимности при проведении конкретной транзакции. Лишь нужно зарегиться на странице Hydra RU, а ваши сведения направится для хранения в кодированном формате на облачном компе. Благодаря сервису http://www.txzqzb.com/bbs/home.php?mod=space&uid=657532 покупатели получают высочайшую степень скрытности.

    जवाब देंहटाएं
  33. Проверенный антивирусный защитник запросто скачать на сайте https://hydra-sait.c-onion.net. Охрана от вирусов, загруженная на домашнем компе пользователя, действительно не помешает. Серьезные пакеты антивирусных базы в скорые сроки осмотрят ваш комп и избавят от шпионских программ.

    जवाब देंहटाएं
  34. Множественное число похвальных рекомендаций является ярким признанием успеха и популярности транспортной компании. Перевозчик vezugruz.by грузоперевозки по беларуси недорого с грузчиками найти осуществляет свои услуги по территории столице на протяжении лет. Список вспомогательных услуг отображен на первой странице веб-сайта. Множество заказов каждый месяц и тысячи благодарных пользователей.

    जवाब देंहटाएं
  35. Наиболее благоприятный вариант отдохнуть на даче – воспользоваться стальной скамейкой среди деревьев вашего участка. Общеизвестно, то что скамейка для дачи из металла будет ещё одним предметом дизайнерского решения. Стальные части конструкции гарантируют очень большой отрезок времени эксплуатации скамеечки. Скамьи для дачного участка выполняют из деревянных брусков на металлической основе.

    जवाब देंहटाएं
  36. Конкретный детский уличный комплекс состоит из множества элементов. Родителям без конца необходимо находить интерактивное место для игры своего ребенка. Отдых на улице очень полезно для любых ребят. Но в реальности детские горки на дачу является наилучшим вариантом для организации игр детей любого возраста.

    जवाब देंहटाएं
  37. Представленные на страницах Смарт Той комплекты https://mouosoh.ru/forum/user/7497/ имеют уникальный вид. Малышу будет максимально увлекательно прокатиться на горках, или покорять конструктивных детали. Сборка любой спортивной конструкции сможет занять малышей на продолжительный период.

    जवाब देंहटाएं
  38. Любая картина постеры спорт будет неотличимо от исходника. Плакаты лучше изготавливать по размеру первоначальных изображений, это даст возможность передать дух времени, когда они были созданы. Если стартовая картина была выполнена маслом, репродукция непременно будет иметь соответствующее нанесение.

    जवाब देंहटाएं
  39. Лично комплектуйте игрока и направляйтесь в удивительные приключения, поодиночке, или с друзьями. Стремитесь чувствовать себя ральным стратегом – смотрите детальные разборы и выбирайте понравившуюся игру. Role-Playing Game или RPG, на страницах Геймер Плюс расположены вот.

    जवाब देंहटाएं
  40. На площадке Liopal представлено порядка 30 основных функций. Программа Лиопал предоставляет всем заказчикам Liopal.com довольно большой каталог полезных средств. Для продавцов несложно разработать дорожную карту сайта. За счет мини-сайта можно запросто увеличить количество пользователей в конкретной соцсети.

    जवाब देंहटाएं
  41. На сайте представлены уже сформированные шаблоны, куда придется лишь только разместить необходимую информацию. В случае если пользователю требуется в короткие сроки сделать мини-сайт и обрезать онлайн-ссылку, непременно воспользуйтесь сервисом Лиопал по ссылке liopal.com. С громадным разнообразием моделей поможет разобраться мастер фирмы Liopal.

    जवाब देंहटाएं
  42. Используя стандартные функции https://0512.banx.co/space-uid-1567715.html&do=profile пользователь сможет повысить заходы и усилить товарооборот. Самым полезный в настоящее время представлен комплекс по созданию мини сайтов. Обновите структуру вашего интернет-сайта вместе со специалистами новейшей платформы Liopal.

    जवाब देंहटाएं
  43. Для внутрикомнатных работ применять смоляно фенолформальдегидную плиту запрещено - могут присутствовать ядовитые аэрозоли при определенных условиях. В большинстве случаев смоляно фенолформальдегидную фанеру используют как внешний отделочный материал. Фанерная плита ФСФ - это влагонепроницамый вид фанеры фанера осб 9 купить, получивший широкое распространение в строительной сфере. Влагонепроницаемый тип почти не поглощает влагу, а после высыхания возвращается к своей изначальной форме.

    जवाब देंहटाएं
  44. Многие пользователи, накручивающие Инстаграм на платных сервисах, сталкиваются с тем, что со временем часть подписчиков пропадает. Они либо списываются социальной сетью, или сами отписываются. Сайт Krutiminst.ru гарантируют качество - все подписчики реальные люди, и если подписчики ушли, то Krutiminst вернет потраченные деньги - бесплатная накрутка подписчиков инстаграм

    जवाब देंहटाएं
  45. Конкретные типы полученной фанеры первоклассно противостоят воде, неблагоприятным погодным условиям, а листы остаются первоначально жесткими. Существует множество видов ФСФ фанеры https://xn--80aao5aqu.xn--90ais/, любая из них отличается специальными свойствами. Главная область использования - обустройство кровли, торговых павильонов и времянок, сараев поверхностная облицовка стен объектов.

    जवाब देंहटाएं
  46. Смешные картинки и открытки С Днем Рождения Дина смотреть фото https://cojo.ru/kartinki/smeshnye-kartinki-i-otkrytki-s-dnem-rozhdeniya-dina-38-foto/

    जवाब देंहटाएं
  47. Ты обиделась прикольные картинки милые фото https://cojo.ru/kartinki/ty-obidelas-prikolnye-kartinki-57-foto/

    जवाब देंहटाएं
  48. Открытка с днем рождения, девушка, подарок лучшие картинки https://cojo.ru/pozdravleniya/otkrytka-s-dnem-rozhdeniya-devushka-podarok-25-foto/

    जवाब देंहटाएं
  49. Academia Aesthetic Wallpapers wallpapershigh.com high resolution for free https://wallpapershigh.com/academia-aesthetic

    जवाब देंहटाएं
  50. Apple Tablet Wallpapers wallpapershigh.com HIGH RESOLUTION 100% free https://wallpapershigh.com/apple-tablet

    जवाब देंहटाएं
  51. 3 Monitor Desktop Wallpapers wallpapershigh.com HIGH RES absolutely free https://wallpapershigh.com/3-monitor-desktop

    जवाब देंहटाएं
  52. Beige Cow Print Wallpapers wallpapershigh.com high quality absolutely free https://wallpapershigh.com/beige-cow-print

    जवाब देंहटाएं
  53. Your car might be stolen if you don't keep this in mind!

    Consider that your car was taken! When you approach the police, they inquire about a specific "VIN decoder"

    A VIN decoder: What is it?

    Similar to a passport, the "VIN decoder" allows you to find out the date of the car's birth and the identity of its "parent" (manufacturing facility). You can also find out:

    1.Type of engine

    2.Model of a car

    3.The DMV and the limitations it imposes

    4.The number of drivers in this vehicle

    You'll be able to locate the car, and keeping in mind the code ensures your safety. The code can be viewed in the online database. The VIN is situated on various parts of the car to make it harder for thieves to steal, such as the first person seated on the floor, the frame (often in trucks and SUVs), the spar, and other areas.

    What if the VIN is intentionally harmed?

    There are numerous circumstances that can result in VIN damage, but failing to have one will have unpleasant repercussions because it is illegal to intentionally harm a VIN in order to avoid going to jail or being arrested by the police. You could receive a fine of up to 80,000 rubles and spend two years in jail. You might be stopped by an instructor on the road.

    Conclusion.

    The VIN decoder may help to save your car from theft. But where can you check the car reality? This is why we exist– VIN decoders!

    जवाब देंहटाएं
  54. По причине перекрестно соединенных лент шпона водоустойчивый класс фанерной доски не уступает по жесткости обычной древесине. При применении специальной клеящей основы листы шпона не разбухнут под действием солнца и дождя или сильной влажности. Стоимость данного материала очень низкая https://fanwood.by/shop/fsf-fanera/2/3-sorta.

    जवाब देंहटाएं
  55. А14 Бионик – быстрый процессор в индустрии айфонов в настоящее время. Четырнадцатый iPhone укомплектован новейшим микропроцессором А14 Бионикл http://bbs.wj10001.com/home.php?mod=space&username=utucutaz, который является преимущественно уникальным процом в отрасли. Новейшая технология обеспечивает ускоренную продуктивность отклика с софтом и веб-сайтами.

    जवाब देंहटाएं
  56. Самый элементарный способ оценить фильмы где есть гинекологическое обследование https://kinonavigator.ru/catalog/films/t_ginekologiczeskoe_obsledovanie после работы – это прибегнуть к сервису «КиноНавигатор». Десятки тысяч сериалов на русском языке представлены посетителям конотеатра «Кино Навигатор» абсолютно без оплаты. Отныне не нужно покупать доступ и тратить денежки для просмотра кино интерактивно.

    जवाब देंहटाएं
  57. Малыши в горшочках (32 фото) красивые фото https://cojo.ru/

    जवाब देंहटाएं
  58. БК MelBet пользуется большой популярностью на отечественном рынке: -Деятельность фирмы лицензирована; - Пользователям предоставлен впечатляющий список ставок - в формате live и предматчевых; - Тут нет задержек с выплатами. Линия ставок невероятно презентабельна. Для того, чтобы получить прибыльный бонус на совершение ставок, нужно всего только использовать промокод MelBet RS777. Получить промокод вы можете на ставку или на депозит. Каждое предложение имеет свои особенности отыгрыша - промокод для MelBet.

    जवाब देंहटाएं
  59. Главным преимуществом сети востребованных онлайн магазинов Samsung телевизоры самсунг 8к Пермь несомненно является возможность закупить товары непосредственно от производителя. Наша фирма предлагает каждому клиенту самые разные акции и скидки, затем, чтобы осуществить закупку еще больше привлекательной.Это гарантирует вам подлинность продукции, а также доступ к очень выгодным стоимостям.

    जवाब देंहटाएं
  60. Samsung – наилучший источник современных технологий и качественной электротехники http://trj.easyye.com/home.php?mod=space&uid=102568

    जवाब देंहटाएं
  61. Прически с прядями у лица (37 фото) красивые фото https://byry.ru/pricheski-s-pryadyami-u-litsa/

    जवाब देंहटाएं
  62. Мужские прически с длинными волосами (55 фото) - лучшие фото идеи с названиями HD фото https://fotoslava.ru/muzhskie-pricheski-s-dlinnymi-volosami

    जवाब देंहटाएं
  63. I recently came across an interesting article titled Turmeric Allergic Reaction: Effects on Face on Beautyah.com https://beautyah.com/turmeric-allergic-reaction-effects-on-face

    जवाब देंहटाएं
  64. Привет, друзья! Хочу поделиться с вами открытием - нашла удивительную галерею с фото бивер-собак. Это что-то потрясающее! 69 фотографий настоящих красавцев! Просто не передать словами, какие они милые и забавные. Если вы, как и я, обожаете смотреть на этих пушистых созданий, то не затягивайте - переходите по ссылке https://byry.ru/biver-sobaka/ и наслаждайтесь полным погружением в мир бивер-собак! Я уже провела там целый час, и время пролетело незаметно. Уверена, это будет отличное развлечение и для вас!

    जवाब देंहटाएं
  65. Отличный автосервис! Обратился в АвтоКрасное с проблемой увеличения мощности моего автомобиля. Мне сделали качественный чип-тюнинг в Гомеле, который сразу ощутимо повысил динамику и разгон авто. Очень доволен результатом! Сервисом пользуюсь уже не первый год, всегда получаю профессиональное обслуживание. Рекомендую всем владельцам автомобилей WAG обратиться в АвтоКрасное для чип-тюнинга в Гомеле. Их сайт https://service-krasnoe.by/chip-tyuning/ содержит подробную информацию о услуге чип-тюнинга и контактные данные сервиса.

    जवाब देंहटाएं
  66. Если вы ищете оригинальные и прикольные идеи тортов на годовщину свадьбы, то вам обязательно стоит посмотреть эту коллекцию картинок на сайте Fotoleto.ru. Здесь вы найдете 94 фотографии, которые вам понравятся и, возможно, даже вдохновят на создание что-то особенного! Переходите по ссылке https://fotoleto.ru/torty-na-godovschinu-svadby-prikolnye-kartinki/ и разнообразьте свое гастрономическое путешествие на юбилей свадьбы!

    जवाब देंहटाएं
  67. Короче, если ты любишь кошек, то обязательно посмотри на эти ушки! Они такие милые и пушистые! А самые классные ушишки кошек ты можешь найти на этом сайте https://creofoto.ru/ushki-koshki. Просто кликай и наслаждайся красотой! ������

    जवाब देंहटाएं
  68. Привет, я Алексей, и я хочу рассказать вам о своем недавнем опыте игры в интернет-казино Вавада. Слоты на сайте впечатлили меня своим разнообразием - я нашел все свои любимые игры и даже открыл для себя новые. К тому же, удобный интерфейс и простая регистрация сделали процесс игры максимально комфортным. Вавада vavada ja xyz - это отличное место для всех любителей азартных игр. А еще здесь быстрые выплаты и щедрые бонусы, включая приветственный бонус и фриспины. Я даже смог выиграть крупную сумму и получить свои выигрыши без задержек. Честно говоря, я очень доволен своим выбором и рекомендую Вавада всем, кто ищет надежное казино с высоким уровнем сервиса. Присоединяйтесь, и вы не пожалеете! https://vavadax4.site/

    जवाब देंहटाएं
  69. Хочу порекомендовать интернет-магазин RealGres их керамическую плитку Ape ama! Они просто замечательные! Заказывала плитку для ванной комнаты и очень довольна качеством и ценой. Плитка оказалась очень прочной и красивой, идеально подошла по цвету и стилю интерьера. Доставка была очень быстрой, несмотря на то что я живу в другом городе. Очень довольна своей покупкой, обязательно буду рекомендовать друзьям и знакомым!

    जवाब देंहटाएं
  70. Эх, лето, солнце, жарища - вот оно, самое приятное время года! А как же без классных обоев на телефон с темой солнца? Они создадут идеальное настроение, даже если за окошком конкретно пасмурно! Загляни сюда https://cultmir.ru/oboi-na-telefon-solntse и выбери свой идеальный вариант. Действительно, какой солнечный настрой без солнечных обоев на экране?!

    जवाब देंहटाएं
  71. Рекомендую вам посетить сайт cojo.ru, где вы найдете фантастическую подборку картинок гонщиков. Всего 60 фото, которые позволят вам окунуться в захватывающий мир гоночных автомобилей и прочувствовать адреналин скорости. Здесь вы увидите самых легендарных и талантливых гонщиков, а также их мощные транспортные средства. Ощутите ветер волос, впитайте энергию и страсть гонки, перейдя по ссылке https://cojo.ru/kartinki/kartinki-gonschiki-60-foto/. Не упустите возможность увидеть все это своими глазами!

    जवाब देंहटाएं
  72. Привет! Меня зовут Алексей, и хочу поделиться с вами своим восторгом от игры в интернет-казино Вавада. Очень доволен выбором этой платформы, ведь она не только предлагает огромное количество разнообразных слотов, но и радует щедрыми бонусами. Кстати, нашел вавада зеркало на сегодняшний vavadaded1, и это оказалось очень удобно. Отмечу абсолютно простую регистрацию, а также быстрые выплаты. Вам не придется ждать своих выигрышей, все происходит оперативно. Интерфейс казино очень удобный и понятный, даже новичок быстро разберется. И, конечно же, стоит отметить приветственный бонус, который порадовал меня крупными суммами и фриспинами. В целом, могу с уверенностью рекомендовать Вавада всем любителям азартных игр. Для тех, кто еще не пробовал, вот ссылка https://vavadaa.fun/. Попробуйте и вы, уверен, не пожалеете!

    जवाब देंहटाएं
  73. Привет всем! Хочу поделиться своим радостным опытом игры на вавада мобильный сайт casino vavada best. После простой регистрации и освоения удобного интерфейса я начал окунаться в мир захватывающих слотов. Казино Вавада дает массу возможностей: крупные суммы, бонусы, приветственный бонус и фриспины. Быстрые выплаты – это то, что действительно важно для каждого игрока. Я сам получил свои выигрыши без проблем. Я рекомендую каждому испытать свою удачу на вавада мобильный сайт casino vavada best. Самые яркие эмоции и захватывающие призы ждут вас!

    जवाब देंहटाएं
  74. Чувак, я точно знаю, что тебе будет интересно узнать про актрису Нонну Гришаеву! Она - настоящая красавица и талантище! У нее такой классный стиль игры - она создает не поверишь какие образы на сцене! Сочувствую, если ты еще не видел ее выступлений! Мне вот недавно подсказали дамочка, что есть классный сайт нонна гришаева, где полно фоток и картинок с этой замечательной актрисой. Загляни, бро! Уверен, ты просто оценишь ее талант и обаяние!

    जवाब देंहटाएं
  75. На днях увлекся игрой в Майнкрафт и искал крутой голубой фон для темы. Нашел на этом сайте много стильных вариантов! Просто бомба! Рекомендую всем, кому нужны классные фоны!

    जवाब देंहटाएं
  76. Э, привет! Такой поворот событий - у тебя день рождения! Хочу пожелать тебе исполнения самых заветных мечт, кучу радости и, конечно же, безбашенной весельницы! Я знал, тебе точно понравится шмыгнуть вот сюда https://prazdniki.info/s-dnem-rozhdeniya-lyubimyy-krestnyy и проверить драйвовые поздравления на этом сайтике! Там открытки, картинки - на любой, даже самый неординарный вкус. Обязательно глянь - уверен, тебе понравится! Удачи тебе и вообще всех благ!

    जवाब देंहटाएं
  77. Всем фанатам картинок и фото! Хочу посоветовать вам зайти по ссылке и просмотреть галерею с 50 удивительными фотографиями асимметричного каре с удлинением. Уверяю вас, что вы останетесь в полном восторге! Там вы найдете множество вариантов этой причёски, которые точно станут новым и стильным акцентом вашего образа. Не упустите шанс вдохновиться и найти идеальную прическу для себя! Пройдите по ссылке https://douo.ru/asimmetrichnoe-kare-s-udlineniem/ и насладитесь прекрасными фотографиями!

    जवाब देंहटाएं
  78. Ахой, нация! Вам нужны открыточки и картинки к дню рождения для Якова? Зацените подборку трогательных картинок на сайте Поздравления.ру. Там есть мегакрутые картинки специально для мужиков, включая Якова! Вот ссылочка - Картинка с днем рождения Яков мужчине трогательные. Там кайфовые заставки с поздравлениями, которые прям в сердце цепляют! Заходите и наслаждайтесь красотой! Ваши чуваки Якову обязательно понравятся!

    जवाब देंहटाएं
  79. Привет! Если ты так же, как и я, обожаешь аромат свежего хлеба и специальные изделия из него, то эта ссылка точно для тебя! Здесь ты найдешь 36 фотографий самых вкусных хлебобулочных изделий, которые заставят твои рецепторы вкуса разыграться. От красочных и пушистых булочек до хрустящих хлеба с золотистой корочкой - все это представлено на этом сайте https://cojo.ru/eda/hleb-i-hlebobulochnye-izdeliya-36-foto/. Уверяю тебя, эти фотографии пробудят твою аппетит и возможно, ты найдешь новый рецепт для своих кулинарных экспериментов. Приятного просмотра и вдохновения!

    जवाब देंहटाएं
  80. Всем привет! Хочу поделиться с вами невероятно красивой галереей артов на тему Нанами Момодзоно. Эти фото и картинки просто ошеломляют своей красотой и тонкостью исполнения. Если хотите насладиться этим прекрасным искусством, рекомендую вам посетить сайт по ссылке https://cojo.ru/art/nanami-momodzono-art-41-foto/. Там вас ждет 41 фото, которые точно покорят ваше сердце. Самые душевные работы Нанами Момодзоно собраны здесь, и я уверен, что они подарят вам массу положительных эмоций. Посмотрите, оцените, и наслаждайтесь! Открывайте новые грани красоты вместе с этими потрясающими артами. Приятного просмотра!

    जवाब देंहटाएं

fly