Java程序辅导

C C++ Java Python Processing编程在线培训 程序编写 软件开发 视频讲解

客服在线QQ:2653320439 微信:ittutor Email:itutor@qq.com
wx: cjtutor
QQ: 2653320439
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 1 
Lab 1: First Steps in C++ - Visual Studio 
First Step: The main function 
1. We create a new Win32 Console Application named ‘FirstStep’: 
 
 
 
2. We always visit the Application Settings! To keep things simple, we select Empty 
project. This way we create an empty project – we are in complete control! 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 2 
3. The result should look like this: 
 
 
 
4. Now we add a New Item. We select Code of Visual C++, select C++ File (.cpp), 
and type main as the name for the file.  
 
 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 3 
5. Our first program: 
 
 
 
We write: 
#include  Include the definitions for console 
I/O. We are using two I/O values: 
cout (standard output) and endl (the 
environment-specific newline). 
using namespace std; Tell C++ to look for all library names 
in namespace std.  
int main() 
{ 
    cout << “Hello World!” << endl; 
 
    return 0; 
} 
Our program just prints the string 
“Hello World!” to the screen. 
 
At the end of the main function we 
return the value 0 – success – to the 
operating system (i.e., Windows) 
 
 
 
  
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 4 
  
  
6. We extend our main function to print the command line arguments to the 
screen. For this reason, we add int argc and char * argv[] as arguments to main. 
By convention, argc contains the number of arguments, that is the number of 
elements in argv. The parameter argv, on the other hand, contains an array of 
C-Strings (i.e., char arrays terminated with ‘\0’). The element at index 0 is 
always the name of the command. We use a simple for-loop to iterate over the 
argv-array and print each element in turn. 
 
 
 
 
 
 
 
 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 5 
7. We need to tell Visual Studio that we would like to attach some Command 
Arguments. In our example we write Hello World, that is, we define two 
arguments Hello and World. Application-specific setting can be applied in the 
Property Pages of the current project: 
 
 
 
8.  When we run FirstStep, then the result is as follows: 
 
 
 
The program prints three lines, one for each argument. Remember, the first 
argument is always the command name. To see this screen in Visual Studio, you 
need to set a break point on the return statement. Otherwise, the program just 
runs and closes the console window immediately after the main functions 
terminates. 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 6 
 
Second Step: Hello World Console Application 
 
Repeat 1-3 of First Step, but use ‘SecondStep’ as the project name. 
4. Now we add a New Class. We select Code of Visual C++, select C++ File (.cpp), 
and type main as the name for the file. 
 
 
 
5. Defining the class name and code layout. Unlike in Java, C++ has no 
requirement that forces us to use the same name for the class and the file that 
contains the class specification. Moreover, in C++ we usually separate the 
specification of a class from its implementation. The specification normally goes 
into a header-file (.h), whereas the code definitions are stored in a .cpp-file. 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 7 
In this project we choose as class name “Hello” and as file name “HelloWorld” to 
signify the difference between Java and C++. 
6. Class specification – HelloWorld.h: 
Visual Studio generates the following skeleton for us: 
#pragma once 
class Hello 
{ 
public: 
    Hello(void); 
    ~Hello(void); 
}; 
 
The first line tells the Visual Studio compiler to include the HelloWorld header-file 
only once. The include mechanism of C++ is based on source code inclusion, 
that is, the code is copied into the including compilation unit. To prevent that the 
same code is included twice, which would lead to a compilation error, the 
programmer is required to take the necessary steps. Visual Studio assists us in 
this matter by automatically generating the #pragma once statement at the start 
of each header file.  
Visual Studio generates a default structure for classes that contains the 
specification of the default constructor (i.e., Hello(void);) and the object 
destructor (i.e., ~Hello(void);). We ignore the object destructor for the moment. 
Both the constructor and the destructor are public as they occur in the public 
region of the class specification. In C++, unlike in Java where visibility is an 
attribute of the declared member, visibility of declared members is arranged in 
regions. All public members follow the public: label. C++ supports private, 
protected, and public visibility.  
To give our Hello class a specify function, we add the private instance variable 
fMessage of type std::string, change the constructor to accept a parameter 
aMessage of type std::string, and add a void Displyay() method. The type 
std::string is defined in the include file string. String is defined in namespace std. 
For this reason we write std::string. In header file we never use the using 
namespace declaration. Therefore, we need to refer to string by its fully qualified 
name std::string. 
The result of our changes to HelloWorld.h is shown below: 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 8 
 
 
7. The HelloWorld.cpp file: 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 9 
In HelloWorld.cpp we define the behavior of class Hello, that is, we include 
“HelloWorld.h” and iostream, declare std as standard namespace for library 
lookup, and define the bodies of the constructor and the method Display. We do 
not change the destructor definition. When defining the member functions, the 
name of the member function always appears as fully qualified name. We write 
Hello::Hello for the constructor and Hello::Display for the Display method. 
The program should compile, but since we have not yet defined a main function 
the compiler will report a linker error (unresolved externals). 
8. The main function: 
 
 
 
In main we just check whether command line arguments given been given and 
initialize the local variable lMessage accordingly. Using lMessage, we declare object 
variable o of type Hello and call its Display method. 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 10 
Third Step: Hello World Class in Shared Library 
1. We create a new Win32 Project named ‘ThirdStep’: 
 
 
  
 We cannot specify the project type yet. This is done in the next step.  
2. Creating a DLL: 
 
 
 
We select DLL as Application type and specify that we wish to start with an 
empty project as usual. 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 11 
3. Now we add a New Class. We select Code of Visual C++, select C++ File (.cpp), 
and type main as the name for the file. 
 
 
 
4. The Hello class: This time we accept the default naming conventions and use 
Hello as file name for the header and .cpp file. 
 
 
 
 
 
 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 12 
5. Changes to Hello.h: 
 
We perform the same steps as in SecondStep/6. In addition, we need to add a 
Visual Studio-specific macro to the class definition of Hello that will enable us to 
export class Hello from a DLL and import its definitions in another program. This 
is a requirement of Visual Studio, not C++. The declaration _declspec(dllexport) 
tells the compiler to generate the appropriate code for a DLL export, whereas the 
declaration _declspec(dllimport) instructs the compiler to generate code to 
access DLL members.  These declarations are enclosed in an #ifndef-#else-
#endif proprocessor spefication. The name THIRDSTEP_EXPORTS is auto-
generated by Visual Studio and enables us to distinguish between the 
construction of the DLL and the use of it. Note, Visual Studio uses syntax 
highlighting. So, within the DLL project _declspec(dllimport) appears gray telling 
us that this option is not active. The compiler substitutes the symbol HELLO_API 
with the corresponding DLL-specific declaration (i.e., _declspec(dllexport) in the 
DLL project). 
 
 
 
6. Hello.cpp: We perform the same steps as in SecondStep/7. 
The compilation of the DLL should succeed with no problems. 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 13 
7. A Console Application that uses the ThirdTest.dll. 
We add a New Project to the current solution called main: 
  
 
 
Again, we create an Empty project for a Console application: 
 
 
 
 
 
 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 14 
8. Now we add a New Item to the project main: 
We select Visual C++/Code, C++ File (.cpp), and specify main as the name of 
the new item. 
 
 
 
9. We define the main function as in SecondStep/8, but also add as first lines 
#include “Hello.h” 
#include  
using namespace std; 
 
to include the definition for class Hello, import the definitions for cout and endl, 
and make std the default namespace for library lookup. 
 
Unfortunately, the compilation of the main project will fail, as the compiler 
cannot find the Hello.h file. We need to tell Visual Studio where to local both the 
Hello.h and to which DLL we are referring.  
 
 
  
 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 15 
10. Additional Include Directories: 
 
 
 
 
 
 
 
 
 
Lab 1 Semester 1, 2011 Dr. Markus Lumpe 
 16 
11. References 
 
 
 
12. Before we can run main, we need to make the project main the Startup Project.  
With no additional arguments given, we should see the following output on the 
screen: