Why does this code work? See the class
keyword in front on the f
function argument? What does it change if I add it?
struct A
{
int i;
};
void f(class A pA) // why 'class' here?
{
cout << pA.i << endl;
}
int main()
{
A obj{7};
f(obj);
return 0;
}
The class keyword is used to create a class called MyClass . The public keyword is an access specifier, which specifies that members (attributes and methods) of the class are accessible from outside the class.
Arguments are the values passed from a function call (i.e., they are the values appearing inside the parentheses of the call) and are sent into the function). The following example is based on pass-by-value, the most common and familiar argument passing technique.
Said differently, when you create a function, you can pass in data in the form of an argument, also called a parameter. Arguments are variables used only in that specific function. You specify the value of an argument when you call the function. Function arguments allow your programs to utilize more information.
Yes, it matters. The arguments must be given in the order the function expects them. C passes arguments by value. It has no way of associating a value with an argument other than by position.
If a function or a variable exists in scope with the name identical to the name of a class type, class can be prepended to the name for disambiguation, resulting in an elaborated type specifier.
You are always allowed to use an elaborated type specifier. Its major use case, however, is when you have a function or variable with an identical name.
Example from cppreference.com:
class T {
public:
class U;
private:
int U;
};
int main()
{
int T;
T t; // error: the local variable T is found
class T t; // OK: finds ::T, the local variable T is ignored
T::U* u; // error: lookup of T::U finds the private data member
class T::U* u; // OK: the data member is ignored
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With