0% found this document useful (0 votes)
670 views18 pages

Advanced C++: Answer

C++ interview questions cover topics like object memory structure, inheritance, namespaces, templates, exceptions, and the standard template library. Namespaces help prevent naming collisions between libraries, while templates provide a generic programming model and inheritance implements relationships like "is-a" and "has-a". Runtime type identification and exceptions add dynamic behavior.

Uploaded by

Shreyas S R
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
670 views18 pages

Advanced C++: Answer

C++ interview questions cover topics like object memory structure, inheritance, namespaces, templates, exceptions, and the standard template library. Namespaces help prevent naming collisions between libraries, while templates provide a generic programming model and inheritance implements relationships like "is-a" and "has-a". Runtime type identification and exceptions add dynamic behavior.

Uploaded by

Shreyas S R
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 18

ADVANCED C++

1. Question 1. How To Initialize Constant And Reference Member Variable?


Answer :
Using initialization list.
2. Question 2. What Is Constant In A Const Function?
Answer :
Variable 'this'.

C++ Interview Questions


3. Question 3. What Is The Issue In The Following Program?
Answer :
 #include <iostream>    
     int main(int argc, char **argv)
     {
         const int & r1 = 100;
         int v = 200;
         int &r2 = v;
         int & r3 = 200;
         return 0;
  }
 Issue is in the initialization of r3 at line 8, rvalue should be a variable.
4. Question 4. Can The Destructor Be Pure Virtual Function?
Answer :
Yes, but you still have to define it!

C++ Tutorial
5. Question 5. What Is The Memory Structure Of An Object?
Answer :
Usually C++ objects are made by concatenating member variables.
For example;
     class Test
     {
      int i;
      float j;
     };
is represented by an int  followed by a float.
     class TestSub: public Test
     {
      int k;
     };
The above class is represented by Test and then an int(for int k). So finally it will
be int,  float and int.
In addition to this each object will have the vptr(virtual pointer) if the class has
virtual function, usually as the first element in a class.

ASP.NET Interview Questions


6. Question 6. What Is The Difference Between Std::vector<int> X; And
Std::vector<int> X();?
Answer :
First one declares a variable x of type std::vector<int>. Second one declares a
function x which returns std::vector<int>.
7. Question 7. What Is A Default Constructor?
Answer :
1.  A constructor which takes no argument
2.  A constructor which has argument(s) but is(are) with default value
ASP.NET Tutorial   SQL Interview Questions
o Question 8. Can I Use This Pointer In The Constructor?
Answer :
Yes, but try to avoid calling virtual function from the constructor and passing this
pointer from the initialization list to other classes.
o Question 9. Does Friends Are Inherited?
Answer :
No

Pro*C/C++ Interview Questions


o Question 10. What Is The Difference Between Calling Just Throw
And Throw With An Object In A Catch Block?
Answer :
A copy of the object is created if we throw with an object. With just throw, no copy
is created.

Java Tutorial
o Question 11. What Is A Possible Replacement For C Static Function
In C++?
Answer :
Unnamed namespaces.

Java Interview Questions


o Question 12. What Is The Size Of An Empty Class, Or Class With Only
Normal Functions?
Answer :
Not zero, 1 for most compilers. The reason for this is to have different address for
different object.

C++ Interview Questions


o Question 13. What Is The Size Of Class With Only Virtual Functions?
Answer :
4 with most of the compilers for a 32bit binary.
o Question 14. How To Declare A Namespace Alias?
Answer :
 namespace MyLongNameSpaceName
{
...
}
namespace MLNSN = MyLongNameSpaceName;
o Question 15. How To Declare C Function In C++?
Answer :
By using extern "C".
extern "C" void print();
or 
extern "C" { 
    void print();
}

Microsoft Visual C++ Interview Questions


o Question 16. What Is The Difference Between Exit And Abort?
Answer :
exit does a graceful process termination, it calls the destructors for all the
constructed objects, with abort they are not called.
With exit the local With variables of the calling function and its callers will not
have their destructors invoked.
o Question 17. Can I Have Static Members In An Union?
Answer :
No

Infosys C++ Interview Questions


o Question 18. Can I Overload Destructor?
Answer :
No

ASP.NET Interview Questions


o Question 19. Can I Call Destructor Explicitly?
Answer :
Yes, but you only want to do that when you have used placement new.
o Question 20. Where Virtual Inheritance Should Be Used In A
Hierarchy?
Answer :
If we have a diamond class hierarchy we should use the virtual inheritance just
below the top of the diamond.

C and C++ Interview Questions


o Question 21. How Do You Link A C++ Program To C Functions?
Answer :
By using the extern "C" linkage specification around the C function declarations.
o Question 22. Explain The Scope Resolution Operator?
Answer :
It permits a program to reference an identifier in the global scope that has been
hidden by another identifier with the same name in the local scope.
o Question 23. What Are The Differences Between A C++ Struct And
C++ Class?
Answer :
The default member and base-class access specifiers are different.

Java Programmer Interview Questions


o Question 24. How Many Ways Are There To Initialize An Int With A
Constant?
Answer :
Two. There are two formats for initializers in C++ as shown in the example that
follows.
The first format uses the traditional C notation.
The second format uses constructor notation.
int foo = 123;
int bar (123);

SQL Interview Questions


o Question 25. How Does Throwing And Catching Exceptions Differ
From Using Setjmp And Longjmp?
Answer :
The throw operation calls the destructors for automatic objects instantiated since
entry to the try block.
o Question 26. What Is Your Reaction To This Line Of Code?
Answer :
It’s not a good practice.

C++ Multithreading Developer Interview Questions


o Question 27. What Is A Conversion Constructor?
Answer :
A constructor that accepts one argument of a different type.

Pro*C/C++ Interview Questions


o Question 28. What Is The Difference Between A Copy Constructor
And An Overloaded Assignment Operator?
Answer :
A copy constructor constructs a new object by using the content of the argument
object. An overloaded assignment operator assigns the contents of an existing
object to another existing object of the same class.
o Question 29. When Should You Use Multiple Inheritance?
Answer :
There are three acceptable answers: "Never," "Rarely," and "When the problem
domain cannot be accurately modeled any other way."
o Question 30. What Is A Virtual Destructor?
Answer :
The simple answer is that a virtual destructor is one that is declared with the
virtual attribute.
o Question 31. Explain The Isa And Hasa Class Relationships. How
Would You Implement Each In A Class Design?
Answer :
A specialized class "is" a specialization of another class and, therefore, has the
ISA relationship with the other class. An Employee ISA Person. This relationship is
best implemented with inheritance. Employee is derived from Person. A class may
have an instance of another class. For example, an employee "has" a salary,
therefore the Employee class has the HASA relationship with the Salary class.
This relationship is best implemented by embedding an object of the Salary class
in the Employee class.
o Question 32. When Is A Template A Better Solution Than A Base
Class?
Answer :
When you are designing a generic class to contain or otherwise manage objects
of other types, when the format and behavior of those other types are unimportant
to their containment or management, and particularly when those other types are
unknown (thus, the genericity) to the designer of the container or manager class.
o Question 33. What Is A Mutable Member?
Answer :
One that can be modified by the class even when the object of the class or the
member function doing the modification is const.

Java Interview Questions


o Question 34. What Is An Explicit Constructor?
Answer :
A conversion constructor declared with the explicit keyword. The compiler does
not use an explicit constructor to implement an implied conversion of types. It’s
purpose is reserved explicitly for construction.
o Question 35. What Is The Standard Template Library?
Answer :
A library of container templates approved by the ANSI committee for inclusion in
the standard C++ specification.
A programmer who then launches into a discussion of the generic programming
model, iterators, allocators, algorithms, and such, has a higher than average
understanding of the new technology that STL brings to C++ programming.
o Question 36. Describe Run-time Type Identification.?
Answer :
The ability to determine at run time the type of an object by using the typeid
operator or the dynamic_cast operator.

Microsoft Visual C++ Interview Questions


o Question 37. What Problem Does The Namespace Feature Solve?
Answer :
Multiple providers of libraries might use common global identifiers causing a
name collision when an application tries to link with two or more such libraries.
The namespace feature surrounds a library’s external declarations with a unique
namespace that eliminates the potential for those collisions. This solution
assumes that two library vendors don’t use the same namespace identifier, of
course.
o Question 38. Are There Any New Intrinsic (built-in) Data Types?
Answer :
Yes. The ANSI committee added the bool intrinsic type and its true and false value
keywords.

INFOSYS C++
1. Question 1. What Is Virtual Constructors/destructors?
Answer :
Virtual destructors: If an object (with a non-virtual destructor) is destroyed
explicitly by applying the delete operator to a base-class pointer to the object, the
base-class destructor function (matching the pointer type) is called on the object.
There is a simple solution to this problem – declare a virtual base-class
destructor. This makes all derived-class destructors virtual even though they don’t
have the same name as the base-class destructor. Now, if the object in the
hierarchy is destroyed explicitly by applying the delete operator to a base-class
pointer to a derived-class object, the destructor for the appropriate class is called.
Virtual constructor: Constructors cannot be virtual. Declaring a constructor as a
virtual function is a syntax error. Does c++ support multilevel and multiple
inheritance.
2. Question 2. Why Garbage Collection?
Answer :
Since C++ does not provide automatic garbage collection like some other
languages, smart pointers can be used for that purpose. The simplest garbage
collection scheme is reference counting or reference linking, but it is quite
possible to implement more sophisticated garbage collection schemes with
smart pointers.

DBMS Interview Questions


3. Question 3. How To Write A Swap( ) Function Which Swaps The Values Of
The Variables Using Bitwise Operators.?
Answer :
Here is the swap( ) function.
swap ( int *x, int *y )
{
*x ^= *y ;
*y ^= *x ;
*x ^= *y ;
}
The swap( ) function uses the bitwise XOR operator and does not require any
temporary variable for swapping.
4. Question 4. What Are The Advantages Of Inheritance?
Answer :
o It permits code reusability.
o Reusability saves time in program development.
o It encourages the reuse of proven and debugged high-quality
software, thus reducing problem after a system becomes functional.
C++ Tutorial
5. Question 5. What Is The Difference Between Declaration And Definition?
Answer :
The declaration tells the compiler that at some later point we plan to present the
definition of this declaration.
E.g.: void stars () //function declaration
The definition contains the actual implementation.
E.g.: void stars () // declarator
{
for(int j=10; j>=0; j--) //function body
cout<<”*”; cout< function_declaration; template
function_declaration;
The only difference between both prototypes is the use of keyword class or
typename, its use is
indistinct since both expressions have exactly the same meaning and behave
exactly the same way.

C++ Interview Questions


6. Question 6. What Do You Mean By Inline Function?
Answer :
The idea behind inline functions is to insert the code of a called function at the
point where thefunction is called. If done carefully, this can improve the
application'sperformance in exchange for increased compile time and possibly
(but not always) an increase in the size of the generated binary executables.
7. Question 7. What Is Virtual Class And Friend Class?
Answer :
Friend classes are used when two or more classes are designed to work together
and need access to each other's implementation in ways that the rest of the world
shouldn't be allowed to have. In other words, they help keep private things private.
For instance, it may be desirable for class DatabaseCursor to have more privilege
to the internals of class Database than main() has.

C#. NET Tutorial   C#. NET Interview Questions


8. Question 8. What Is Function Overloading And Operator Overloading?
Answer :
Student Resources Function overloading: C++ enables several functions of the
same name to be defined, as long as these functions have different sets of
parameters (at least as far as their types are concerned). This capability is called
function overloading. When an overloaded function is called, the C++ compiler
selects the proper function by examining the number, types and order of the
arguments in the call.
Function overloading is commonly used to create several functions of the same
name that perform similar tasks but on different data types.
Operator overloading allows existing C++ operators to be redefined so that they
work on objects
of user-defined classes. Overloaded operators are syntactic sugar for equivalent
function calls. They form a pleasant facade that doesn't add anything
fundamental to the language (but they can improve understandability and reduce
maintenance costs).
9. Question 9. Difference Between Realloc() And Free()?
Answer :
The free subroutine frees a block of memory previously allocated by the malloc
subroutine.
Undefined results occur if the Pointer parameter is not a valid pointer. If the
Pointer parameter is a null value, no action will occur. The realloc subroutine
changes the size of the block of memory pointed to by the Pointer parameter to
the number of bytes specified by the Size parameter and returns a new pointer to
the block. The pointer specified by the Pointer parameter must have been created
with the malloc, calloc, or realloc subroutines and not been deallocated with the
free or realloc subroutines. Undefined results occur if the Pointer parameter is not
a valid pointer

Core Java Interview Questions


10. Question 10. What Do You Mean By Binding Of Data And Functions?
Answer :
Encapsulation.

Core Java Tutorial


11. Question 11. What Is Abstraction?
Answer :
Abstraction is of the process of hiding unwanted details from the user.

Data Structures Interview Questions


12. Question 12. What Is Encapsulation?
Answer :
Packaging an object’s variables within its methods is called encapsulation.

DBMS Interview Questions


13. Question 13. What Is The Difference Between An Object And A Class?
Answer :
Classes and objects are separate but related concepts. Every object belongs to a
class and every class contains one or more related objects.
o A Class is static. All of the attributes of a class are fixed before,
during, and after the execution of a program. The attributes of a class
don't change.
o The class to which an object belongs is also (usually) static. If a
particular object belongs to a certain class at the time that it is created
then it almost certainly will still belong to that class right up until the
time that it is destroyed.
o An Object on the other hand has a limited lifespan. Objects are
created and eventually destroyed. Also during that lifetime, the attributes
of the object may undergo significant change.
Data Structures Tutorial
14. Question 14. What Is Polymorphism? Explain With An Example?
Answer :
"Poly" means "many" and "morph" means "form". Polymorphism is the ability of an
object (or reference) to assume (be replaced by) or become many different forms
of object.
Example: function overloading, function overriding, virtual functions. Another
example can be a plus ‘+’ sign, used for adding two integers or for using it to
concatenate two strings.
15. Question 15. What Do You Mean By Inheritance?
Answer :
Inheritance is the process of creating new classes, called derived classes, from
existing classes or base classes. The derived class inherits all the capabilities of
the base class, but can add embellishments and refinements of its own.

C & Data Structures Interview Questions


16. Question 16. What Is A Scope Resolution Operator?
Answer :
A scope resolution operator (::), can be used to define the member functions of a
class outside the class.

Java Tutorial
17. Question 17. What Are Virtual Functions?
Answer :
A virtual function allows derived classes to replace the implementation provided
by the base class. The compiler makes sure the replacement is always called
whenever the object in question is actually of the derived class, even if the object
is accessed by a base pointer rather than a derived pointer. This allows
algorithms in the base class to be replaced in the derived class, even if users don't
know about the derived class.

ADO.Net Interview Questions


18. Question 18. What Is Friend Function?
Answer :
As the name suggests, the function acts as a friend to a class. As a friend of a
class, it can access its private and protected members. A friend function is not a
member of the class. But it must be listed in the class definition.

C++ Interview Questions


19. Question 19. What Is The Difference Between Class And Structure?
Answer :
Structure: Initially (in C) a structure was used to bundle different type of data
types together to perform a particular functionality. But C++ extended the
structure to contain functions also. The major difference is that all declarations
inside a structure are by default public.
Class: Class is a successor of Structure. By default all the members inside the
class are private.
Go (programming language) Tutorial
20. Question 20. What Is Public, Protected, Private?
Answer :
o Public, protected and private are three access specifiers in C++.
o Public data members and member functions are accessible outside
the class.
o Protected data members and member functions are only available to
derived classes.
o Private data members and member functions can’t be accessed
outside the class.
However there is an exception can be using friend classes.

Java Interview Questions


21. Question 21. What Is An Object?
Answer :
Object is a software bundle of variables and related methods. Objects have state
and behavior.
22. Question 22. What Is A Class?
Answer :
Class is a user-defined data type in C++. It can be created to solve a particular
kind of problem.
After creation the user need not know the specifics of the working of a class.

F Sharp (programming language) Tutorial


23. Question 23. When Linking C Or Assembly Language Modules With C++
Modules I Get Undefined Symbol Errors At Link Time. It Appears That None Of
The C Or Assembly Public Symbols Can Be Found.?
Answer :
C++ is a strongly typed language. In order to support the language to its fullest,
Turbo C++ must attach information to the symbols generated for function names
and variables. When this is done, the symbol will no longer match the standard C
style function name. In order to link correctly, the compiler must be notified that
the symbol is declared in an external module without type information tacked on
to the symbol. This is done by prototyping the function as type extern "C". Here is
a quick example: extern "C" int normal_c_func( float, int, char ); // name not altered
void cplusplus_function( int ); // name altered .

Go (programming language) Interview Questions


24. Question 24. Classes With Static Data Members Are Getting Linker Errors
("undefined").?
Answer :
This code is built into Turbo C++ 1.0 but not in version 3.0. In the 1.0 compiler,
static members without definitions were given a default value of 0. This default
definition will no longer be made in the compiler. The programmer must now give
an explicit definition for each static member.
Here is a quick example: 
class A 

static int i; 
}; 
A linker error saying that A::i is not defined will result unless the source also
contains a line such as: 
int A::i = 1;

C#. NET Interview Questions


25. Question 25. What Potential Problems Can Arise From Type Casting A Base
Class Pointer Into A Derived Class Pointer So That The Derived Class's Member
Functions Can Be Called?
Answer :
Syntactically this is allowable. There is always the possibility of a base pointer
actually pointing to a base class. If this is typecast to a derived type, the method
being called may not exist in the base class. Therefore, you would be grabbing the
address of a function that does not exist.

R Programming language Tutorial


26. Question 26. What's The Difference Between The Keywords Struct And
Class?
Answer :
The members of a STRUCT are PUBLIC by default, while in CLASS, they default to
PRIVATE. They are otherwise functionally equivalent.

F Sharp (programming language) Interview Questions


27. Question 27. I Have Declared A Derived Class From A Base Class, But I
Can't Access Any Of The Base Class Members With The Derived Class
Function.?
Answer :
Derived classes DO NOT get access to private members of a base class. In order
to access members of a base class, the base class members must be declared as
either public or protected. If they are public, then any portion of the program can
access them. If they are protected, they are accessible by the class members,
friends, and any derived classes.

Core Java Interview Questions


28. Question 28. How Can I Use The Paradox Engine 1.0 With C++?
Answer :
Because the Paradox Engine functions are all compiled as C functions, you will
have to assure that the names of the functions do not get "mangled" by the C++
compiler. To do this you need to prototype the Engine functions as extern "C". In
the pxengine.h header file insert the following code at the lines indicated. 
/* inserted at line # 268 */ 
#ifdef __cplusplus 
extern "C" { 
#endif 
/* inserted at line # 732, just before the final #endif */ 
#ifdef __cplusplus 
} #endif 
Paradox Engine version 2.0 is "aware" of C++ and thus does not require any
modifications to its header file.

D Programming Language Tutorial


29. Question 29. I Have A Class That Is Derived From Three Base Classes. Can
I Insure That One Base Class Constructor Will Be Called Before All Other
Constructors?
Answer :
If you declare the base class as a virtual base class, its constructor will be called
before any non-virtual base class constructors. Otherwise the constructors are
called in left-to-right order on the declaration line for the class.

C preprocessor Interview Questions


30. Question 30. Are The Standard Library I/o Functions Still Available For Use
With The C++ Iostreams Library?
Answer :
Yes, using 
#include 
functions such as printf() and scanf() will continue to be available. However, using
them in conjunction with stream oriented functions can lead to unpredictable
behaviour.
31. Question 31. In C++, Given Two Variables Of The Same Name, One Local
And One Global, How Do I Access The Global Instance Within The Local Scope?
Answer :
Use the scope (::) operator. 
int x = 10; 
for(int x=0; x < ::x; x++) 

cout << "Loop # " << x << "n"; // This will loop 10 times 
}
32. Question 32. Will The Following Two Functions Be Overloaded By The
Compiler, Or Will The Compiler Flag It As An Error? Why? Void Test( Int X, Double
Y); & Int Test( Int A, Double B).
Answer :
The compiler will flag this as a redeclaration error because neither return types
nor argument names are considered when determining unique signatures for
overloading functions. Only number and type of arguments are considered.

R Programming language Interview Questions


33. Question 33. If I Pass A Character To A Function Which Only Accepts An
Int, What Will The Compiler Do? Will It Flag It As An Error?
Answer :
No. The compiler will promote the char to an int and use the integer
representation in the function instead of the character itself.

Data Structures Interview Questions


34. Question 34. I Was Trying To Allocate An Array Of Function Pointers Using
The New Operator But I Keep Getting Declaration Syntax Errors Using The
Following Syntax: New Int(*[10])(); What's Wrong?
Answer :
The new operator is a unary operator and binds first to the int keyword producing
the following: (new int) (*[10])(); 
You need to put parentheses around the expression to produce the expected
results: new (int (*[10]());
35. Question 35. What Are Inline Functions? What Are Their Advantages? How
Are They Declared?
Answer :
An inline function is a function which gets textually inserted by the compiler, much
like macros. The advantage is that execution time is shortened because linker
overhead is minimized. They are declared by using the inline keyword when the
function is declared: 
inline void func(void) { cout << "printing inline function n"; } 
or by including the function declaration and code body within a class: 
class test 

tv public: 
void func(void) { cout << "inline function within a class.n"} 
};
36. Question 36. If I Don't Specify Either Public Or Private Sections In A Class,
What Is The Default?
Answer :
In a class, all members are private by default if neither public nor private sections
are declared.

C & Data Structures Interview Questions


37. Question 37. What Does The _seg Modifier Do?
Answer :
Using _seg causes a pointer to become a storage place for a segment value,
rather than an offset ( or a segment/offset ). For instance, if "int _seg *x" contains
the value 0x40, then when you use "*x", the value pointed to will be at segment
0x40, offset 0. If you add a value to the pointer, the value is multiplied by the size
of the pointer type. That new value is used as an offset, and is combined with the
segment value contained in the pointer. For instance, 
int _seg *x; 
int value; 
x = (int _seg *)0x40; 
value = *(x + 20); 
value is assigned the value of the integer at 0x40:0x28 
(Remember, 20 * sizeof(int) = 40 = 0x28).
38. Question 38. Can I Statically Allocate More Than 64k Of Data In A Single
Module?
Answer :
Yes. Far data items are now supported: 
... 
char far array1[60000L]; 
char far array2[60000L]; 
... 
For arrays larger than 64k use: 
char huge array3[100000L];
39. Question 39. What Is A Friend Member Function?
Answer :
Declaring a friend gives non-members of a class access to the non-public
members of a class.
40. Question 40. Why Do I Get A "type Name Expected" Error On My Definition
Of A Friend Class In My New Class?
Answer :
A You need to let the compiler know that the label you use for your friend class is
another class. If you do not want to define your entire class, you can simply have
"class xxx", where xxx is your label.

ADO.Net Interview Questions


41. Question 41. How Can I Output Hex Values In Upper Case Using The
Iostream Libraries?
Answer :
You need to set the state of the stream using setf(). For example, 
#include 
int main(void) 

cout << hex; 
cout << "nNot upper-case : " << 255; 
cout.setf(ios::upper-case); 
cout << "nUppercase : " << 255; 
return 0; 
}
42. Question 42. What Is The "this" Pointer?
Answer :
"this" is a local variable in the body of a non-static member function. It is a pointer
to the object for which the function was invoked. It cannot be used outside of a
class member function body.

Java Interview Questions


43. Question 43. Why Does A Binary Member Function Only Accept A Single
Argument?
Answer :
The first argument is defined implicitly.
44. Question 44. What Is The Const Keyword Doing Here?
Answer :
There is a pointer to the object for which a function is called known as the 'this'
pointer. By default the type of 'this' is X *const ( a constant pointer). The const
keyword changes the type to const X *const ( a constant pointer to constant
data ).
45. Question 45. I Want To Use _new_handler And Set_new_handler.
Answer :
Turbo C++ supports _new_handler and set_new_handler.
The type of _new_handler is as follows:
typedef void (*vfp)(void); 
vfp _new_handler; 
vfp set_new_handler( vfp );
46. Question 46. I Would Like To Use C++ Fstreams On A File Opened In Binary
Mode, How Is This Done?
Answer :
Use ios::binary as the open mode for the file: 
#include 
ifstream binfile; 
binfile.open("myfile.bin", ios::binary);
47. Question 47. How Can I Get At The Dos File Handle Associated With My
Iostream?
Answer :
Using a combination of member functions fd() and rdbuf() you can get at the file
handle. 
#include 
#define fstrno(s) (((s).rdbuf())->fd()) 
ifstream test("test.txt"); 
cout << "handle is " << fstrno(test) << 'n';

You might also like