C++基本語法操作方式

  • 
    #include "stdafx.h"
    
    #include <iostream>
    #include <string>
    #include <stdlib.h>
    
    using namespace std;
    
    
    //template
    template <typename T>
    
    T max(T a, T b)
    {
    	if (a > b)	return a;
    	else return b;
    }
    
    //default parameter
    int max_int(int a=1, int b=2)
    {
    	if (a > b) return a;
    	else return b;
    }
    
    enum test_enum
    {
    	item0,
    	item1,
    	item2,
    };
    
    
    //class test
    
    class student;	//提前聲明
    
    class student
    {
    
    private:
    	int num;		//member variables
    	string name;
    	string sex;
    	mutable int mutable_var;		//mutable variable
    
    public:
    	const static int static_var;			//static variable
    
    public:
    	void display();					//normal member function
    	void const_display() const;		//const type member function
    	void const_display2() const;
    
    	bool operator > (student &stu) const;	// '>' operator reload
    	operator int() const;		//type conversion function of 'int'
    
    	friend void class_friend_function(student &a);	//friend function
    
    	student(int num, string name="null", string sex="null");	//constructor reload and with default parameters
    	student();		//constructor reload
    	virtual ~student();		//destructor
    };
    
    void student::display() 	//member function
    {
    	mutable_var = 1;	//mutable variable can be accessed in any function
    
    	cout << "display called" << endl;
    	cout << "num:" << num << ",name:" << name << ",sex:" << sex << endl;
    }
    
    void student::const_display2() const
    {
    	cout << "const_display2" << endl;
    }
    
    void student::const_display() const
    {
    	mutable_var = 1;	//const function can only modify mutable variable
    	const_display2();	//const function can only call const function
    
    	cout << "const display called" << endl;
    	cout << "num:" << num << ",name:" << name << ",sex:" << sex << endl;	//can refer to any member variables, dont change value
    }
    
    student::student(int num, string name, string sex)	//with default parameters
    {
    	this->num = num;
    	this->name = name;
    	this->sex = sex;
    
    	cout << "reload constructor" << endl;
    }
    
    student::student()	//constructor reload
    {
    	num = 2;
    	name = "wangming";
    	sex = "male";
    
    	cout << "default constructor" << endl;
    }
    
    student::~student()
    {
    	cout << "student destructor call" << endl;
    }
    
    //init static variable
    const int student::static_var = 0x55;
    
    //friend function
    void class_friend_function(student &a)
    {
    	cout << "class student friend function test:" << a.num << endl;
    }
    
    bool student::operator>(student &stu) const
    {
    	if (this->num >= stu.num) return true;
    	else return false;
    }
    
    student::operator int() const
    {
    	return num;
    }
    
    
    //derived class
    class student_derived :public student
    {
    private:
    	int derive_data;
    
    public:
    	void derive_function(void);
    	void display(void);
    
    	student_derived(int num=0, string name = "null", string sex = "null", int data = 0) :student(num, name, sex), derive_data(data){};
    	~student_derived(){};
    };
    
    void student_derived::display(void)
    {
    	cout << "derived class function overload" << endl;
    }
    void student_derived::derive_function(void)
    {
    	cout << "in derive_function" << endl;
    }
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int sum, a, b;
    	string str;
    
    	const student student1(1, "name", "sex");
    	student student2;
    	student1.const_display();
    	cout << "static var=" << student::static_var <<","<<student1.static_var<< endl;
    	class_friend_function(student2);
    	cout << "class < operator reload=" << (student1 > student2) << endl;
    	cout << "type conversion function=" << int(student1) << endl;
    
    	student_derived stu1;
    	stu1.display();
    
    	cout << "this is a c++ program"<<endl<<"input a, b to add..."<<endl;
    
    	cin >> a >> b;
    	sum = a + b;
    	cout << "a+b=" << sum << endl;
    
    	cout << "template T max(T a,T b) return " << max(a,b) << endl;
    	cout << "default parameter max(a=1,b=2) return" << max_int() << endl;
    
    	str = "string";
    	cout << "string type=" << str <<",sizeof(str)="<<sizeof(str)<< endl;
    
    	system("pause");
    
    	return 0;
    }

     

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章