C++学习笔记1

class Base
{

}

1.this的使用(port是类成员变量)

Server_init::Server_init(int port)
{
	this->port = port;
	//(*this).port = port;
}

2.C++内置类型

内置类型是编程语言自己定义的一些类型
在C++中内置类型有:

整型:
①整数 int、short和long
②字符型 char和wchar_t
③布尔型 bool
整型可用修饰:unsigned
浮点:
float、double和long double


3.多态性基础的学习

//Server_init.h
class Server_init
{
public:
	Server_init() = default;
	Server_init(int port);
	~Server_init();
	int get_port(){ return port; };         //返回端口号
	void set_port(int port);//设置端口号

public:
	virtual void println();//虚函数
	void myself();
};
//Server_base.h
class Server_base :
	public Server_init
{
public:
	Server_base();
	~Server_base();
	void println();
	void myself();
};
//测试代码:
//创建基类
		Server_init *server = new Server_init();
		server->println();//虚函数
		server->myself(); //成员函数
		cout <<endl;

		//创建派生类
		Server_base *server_base = new Server_base();
		server_base->println();
		server_base->myself();
		cout << endl;

		//指针隐式转换
		server = server_base;
		server->println();//动态绑定,实现多态性
		server->myself();
		cout << endl;

		server_base = nullptr;//没有此语句,后面delete会出错
		//释放内存
		delete server;
		server = nullptr;
		delete server_base;
		server_base = nullptr;

		//对象形式
		Server_init server_init;
		server_init.println();
		cout << endl;

		Server_base server_base1;
		server_base1.println();
		cout << endl;

		//对象之间没有隐式转换,也没有动态与静态类型之区别
		server_init = server_base1;
		server_init.println();


运行结果:

C++学习笔记1_第1张图片

4.防止重复编译

方式一:

#ifndef _SOMEFILE_H_

#define _SOMEFILE_H_

.......... // 一些声明语句

#endif

方式二:

#pragma once

... ... // 一些声明语句


5.重载是相对于同一作用域而言的,派生类的作用域嵌套在基类的作用域之内。声明在内层作用域的函数并不会重载声明在外层作用域中的函数。

即是派生类成员与基类成员的形参列表不一致,若函数名相同,基类成员仍然会被隐藏掉。

class Base
{
	void a();
};

class Extend : Base
{
	void a(int m);
};

Base base; Extend extend;
base.a();//正确
extend.a();//错误
extend.a(100);//正确
extend.Base::a();//正确








你可能感兴趣的:(C++学习笔记1)