How does a range-based for loop work in C++11 and above?
- It works only on arrays and not on containers.
- It iterates over elements using indices.
- It allows iterating over all elements in a container or array directly.
- It requires manual initialization of iterators.
In C++11 and newer versions, the range-based for loop provides a more readable syntax to iterate over all elements of a container or an array. The loop automatically gets the begin and end iterators of the range and iterates over each element without needing manual indexing.
How can a function indicate that it will not throw any exceptions?
- By using the noexcept specifier
- By returning a null pointer
- By using the try block without catch
- By marking it as static
The noexcept specifier in C++11 and later indicates that a function does not throw exceptions. If such a function does throw an exception, the program will terminate (usually by calling std::terminate). This can be a useful optimization hint for the compiler.
Which parameter-passing method does not allow the function to modify the actual argument?
- By value
- By reference
- By pointer
- By name
When parameters are passed by value, a copy of the argument is made for the function. Any modifications to this copy do not affect the original argument outside the function.
In C++, the data type _______ is commonly used to store large integers.
- float
- char
- long long int
- double
In C++, the long long int data type is designed to store very large integers. It can typically store at least 64 bits, allowing for a wide range of integer values far beyond the standard int.
The members of a struct are _______ by default.
- private
- public
- protected
- static
In C++, the members of a structure (struct) are public by default. This means they can be accessed from functions outside the structure. This is in contrast to the members of a class, which are private by default and cannot be accessed or viewed outside of the class.
How does C++ handle the virtual table in a multiple-inheritance scenario?
- Single table for all classes
- Separate tables for each base class
- A combination of both depending on visibility
- Virtual tables are not used
In C++, when a class inherits from multiple base classes, each base class will have its own virtual table. Thus, an object of the derived class will have separate virtual tables for each inherited class to handle dynamic dispatch for function calls, ensuring correct method resolution.
A pointer passed by value to a function allows the function to change the _______ to which the pointer points.
- value
- address
- direction
- data type
When a pointer is passed by value to a function, the function gets a copy of the pointer. This means that the function can modify the data at the address the pointer points to, but it cannot change the address of the original pointer itself.
Which operator will give the remainder of a division operation?
- /
- *
- +
- %
The '%' operator in C++ is called the modulus operator. It is used to determine the remainder of a division operation between two integers. For example, '7 % 3' will return 1 as the remainder.
When an array is passed to a function, it is always passed by _______.
- value
- reference
- name
- address
When an array is passed to a function, it is passed by name, which essentially means the address of the array is passed. This allows functions to modify the original array. The behavior is similar to passing by reference.
A class that contains at least one pure virtual function is called a(n) _______.
- subclass
- instantiated class
- abstract class
- inherited class
An abstract class in C++ is a class that contains at least one pure virtual function. This means the class cannot be instantiated and is meant to be inherited by other classes that provide implementations for the pure virtual functions.